JSON实现Android 网络数据交换

来源:互联网 发布:linux mysql 客户端 编辑:程序博客网 时间:2024/05/22 07:47
1,服务端到客户端 
服务端新建Json数据,HttpservletResponse是请求对象的返回,得到他的writer,把json转换成string就可以。写在doGet里。 
代码: 
Java代码  收藏代码
  1. res.setContentType("UTF-8");  
  2. PrintWriter pw = res.getWriter();  
  3. JSONObject json = new JSONObject();  
  4. json.put("name","fwz");  
  5. pw.write(json.toString());  

客户端,使用HttpClient的execute的方法。用httpGet去执行。返回HttpResponse。再从response读取。 
代码: 
Java代码  收藏代码
  1. BufferedReader  bufferedReader = null;  
  2.         StringBuilder sb = new StringBuilder();  
  3.         String s = "";  
  4.         try {  
  5. HttpClient client = new DefaultHttpClient();  
  6. HttpResponse response = client.execute(new HttpGet("http://10.0.2.2:8080/myFirstServlet/JSONServer"));  
  7. HttpParams httpParams = client.getParams();  
  8. HttpConnectionParams.setConnectionTimeout(httpParams, 3000);  
  9. HttpConnectionParams.setSoTimeout(httpParams, 5000);  
  10. HttpEntity entity = response.getEntity();  
  11. if (entity!=null) {  
  12. bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8"));  //8192  
  13. while((s=bufferedReader.readLine())!=null) {  
  14. sb.append(s);     
  15. }  
  16. }  
  17. nameTextView.setText(sb.toString());  //这里输出得到的JSon数据(未解析)  
  18. catch (Exception e) {  
  19. // TODO: handle exception  
  20. e.printStackTrace();  
  21. }  


2,客户端到服务器端的传送 

客户端,跟前面差不多,也是利用httpClient的execute方法,不过发送数据用Post。结合entity。 
代码: 
Java代码  收藏代码
  1. HttpClient client = new DefaultHttpClient();  
  2. HttpPost post = new HttpPost("http://10.0.2.2:8080/myFirstServlet/JSONServer");  
  3. JSONObject jsonObject = new JSONObject();  
  4. try {  
  5. jsonObject.put("name""ze");  
  6. StringEntity entity = new StringEntity(jsonObject.toString());  
  7. post.setEntity(entity);  
  8. HttpResponse responString = client.execute(post);  
  9. catch (JSONException e) {  
  10. // TODO Auto-generated catch block  
  11. e.printStackTrace();  
  12. catch (UnsupportedEncodingException e) {  
  13. // TODO Auto-generated catch block  
  14. e.printStackTrace();  
  15. catch (ClientProtocolException e) {  
  16. // TODO Auto-generated catch block  
  17. e.printStackTrace();  
  18. catch (IOException e) {  
  19. // TODO Auto-generated catch block  
  20. e.printStackTrace();  
  21. }  


服务端,只要写一个读取的方法就可以,在方法里处理HttpservletRequest的数据 
代码:  这里只是输出 
Java代码  收藏代码
  1. try {  
  2. BufferedInputStream in = new BufferedInputStream(req.getInputStream());  
  3.     int i;  
  4.     char c;  
  5.     while ((i=in.read())!=-1) {  
  6.     c=(char)i;  
  7.     System.out.print(c);  
  8.     }  
  9.     System.out.println();  
  10.     System.out.println("test");  
  11. }  
  12. catch (Exception ex) {  
  13. ex.printStackTrace();  
  14. }  
原创粉丝点击