標籤:
最近在搞一個android app,使用到和伺服器的json互動技術。伺服器端我是簡單的使用servlet,來接收來自app的請求,處理json使用org.json這個jar包。
伺服器端:
1. 將要發送的對象處理成JSONObject 或者 JSONArray對象,這樣只要toString就可以變成JSON語句了。
JSONArray JSONArr = reader.getNewsItemInJson(page);
2.設定回應標頭的內容類型為:text/json
response.setContentType("text/json;charset=UTF-8");
3.將對象轉化成位元組數組,寫入輸出資料流
response.getOutputStream().write(JSONArr.toString().getBytes());
android app端則使用普通的HTTP協議擷取資料就行了,具體代碼如下。
1 public static String readJsonString(String urlStr){ 2 StringBuffer sb = new StringBuffer(); 3 HttpURLConnection conn=null; 4 try{ 5 URL url = new URL(urlStr); 6 conn =(HttpURLConnection) url.openConnection(); 7 conn.setRequestMethod("GET"); 8 conn.setConnectTimeout(5000); 9 conn.setDoInput(true);10 if(conn.getResponseCode()==200){11 InputStream is = conn.getInputStream();12 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();13 byte[] buffer = new byte[1024];14 int len=0;15 while(true){16 len = is.read(buffer);17 if(len==-1){18 break;19 }else {20 outputStream.write(buffer);21 }22 }23 byte[] result = outputStream.toByteArray();24 String str = new String(result, 0, result.length, "gbk");25 sb.append(str);26 outputStream.close();27 is.close();28 }29 }catch (Exception e){30 e.printStackTrace();31 }finally {32 if(conn!=null) {33 conn.disconnect();34 }35 }36 return sb.toString();37 }
android 開發:Json的發送和接收