JSON实现Android 网络数据交换(包括复杂对象的传送)
2014-12-02 09:16
573 查看
1,服务端到客户端
服务端新建Json数据,HttpservletResponse是请求对象的返回,得到他的writer,把json转换成string就可以。写在doGet里。
代码:
Java代码
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读取。
代码:
Java代码
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。
代码:
Java代码
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的数据
代码: 这里只是输出
Java代码
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();
}
服务端新建Json数据,HttpservletResponse是请求对象的返回,得到他的writer,把json转换成string就可以。写在doGet里。
代码:
Java代码
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读取。
代码:
Java代码
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。
代码:
Java代码
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的数据
代码: 这里只是输出
Java代码
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();
}
相关文章推荐
- android使用JSON进行网络数据交换(服务端、客户端)的实现
- android使用JSON进行网络数据交换(服务端、客户端)的实现
- JSON实现Android 网络数据交换
- android 使用JSON进行网络数据交换
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .
- Android webview与js交换JSON对象数据示例
- Android 使用JSON进行网络数据交换
- Android使用JSON进行网络数据交换
- android之JSON 进行网络数据交换
- Android中通过广播交换复杂对象数据
- Android 实现json网络数据通过BaseAdapter加载到ListView中
- Android JSON网络数据交换
- Android JSON网络数据交换
- android 使用JSON进行网络数据交换
- Android webview与js 交换JSON对象数据
- Android使用JSON进行网络数据交换
- Android中Activity与Service如何通过广播交换复杂对象数据
- Android利用Gson实现对象和Json数据的相互转换
- android之JSON 进行网络数据交换
- Android利用Gson实现对象和Json数据的相互转换