android 开发:Json的发送和接收

最近在搞一个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 开发)