最近在搞一个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 }