JSON实现Android 网络数据交换(包括复杂对象的传送)
1,服务端到客户端
服务端新建Json数据,HttpservletResponse是请求对象的返回,得到他的writer,把json转换成string就可以。写在doGet里。
代码:
res.setContentType("UTF-8"); PrintWriter pw = res.getWriter(); JSONObject json = new JSONObject(); json.put("name","fwz"); pw.write(json.toString());
客户端,使用HttpClient的execute的方法。用httpGet去执行。返回HttpResponse。再从response读取。
代码:
BufferedReader bufferedReader = null; StringBuilder sb = new StringBuilder(); String s = ""; try { HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(new HttpGet("http://10.0.2.2:8080/myFirstServlet/JSONServer")); HttpParams httpParams = client.getParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 3000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpEntity entity = response.getEntity(); if (entity!=null) { bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8")); //8192 while((s=bufferedReader.readLine())!=null) { sb.append(s); } } nameTextView.setText(sb.toString()); //这里输出得到的JSon数据(未解析) } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
2,客户端到服务器端的传送
客户端,跟前面差不多,也是利用httpClient的execute方法,不过发送数据用Post。结合entity。
代码:
HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://10.0.2.2:8080/myFirstServlet/JSONServer"); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("name", "ze"); StringEntity entity = new StringEntity(jsonObject.toString()); post.setEntity(entity); HttpResponse responString = client.execute(post); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
服务端,只要写一个读取的方法就可以,在方法里处理HttpservletRequest的数据
代码:这里只是输出
try { BufferedInputStream in = new BufferedInputStream(req.getInputStream()); int i; char c; while ((i=in.read())!=-1) { c=(char)i; System.out.print(c); } System.out.println(); System.out.println("test"); } catch (Exception ex) { ex.printStackTrace(); }
相关推荐
WebVincent 2020-07-21
fengchao000 2020-07-04
baijinswpu 2020-06-28
88483063 2020-06-28
fengchao000 2020-06-16
somebodyoneday 2020-06-15
wujiajax 2020-06-14
somebodyoneday 2020-05-16
xx0cw 2020-05-16
newthon 2020-05-14
sailxu00 2020-04-27
fengchao000 2020-04-20
88483063 2020-01-29
83163452 2020-01-28
baijinswpu 2020-01-25
baijinswpu 2020-01-18