android网络通讯数据封装之 json
2014-12-16 20:38
218 查看
Demo程序包括客户端和服务端
客户端按json数据格式封装数据传至服务端。
服务端为简单的servlet程序,负责接收客户端传到json数据,然后按原数据返回客户端.
实例代码如下:
public static String cmdLogIn() {
String urlString = "http://192.168.8.75:89/webroot/jsontest";
HttpPost request = new
HttpPost(urlString);
try{
//json数据格式{"data":{"spring":"yes","java":"ok"},
"head": {"password":"123456","name":"rarnu"}}
//封装代码
JSONObject headParam = new JSONObject();
headParam.put("name", "yihu");
headParam.put("password", "123456");
JSONObject
dataParam = new JSONObject();
dataParam.put("java", "ok");
dataParam.put("spring",
"yes");
JSONObject paramss = new JSONObject();
paramss.put("head",
headParam);
paramss.put("data",
dataParam);
//json数据格式
{"data":[{"spring":"yes","java":"ok"}],
"head":[{"password":"123456","name":"yihu"},{"arry1":"java","classid":"321546"}]}
JSONArray headParams = new
JSONArray();
//数组[0]
JSONObject
headParam1 = new JSONObject();
headParam1.put("name",
"yihu");
headParam1.put("password",
"123456");
//数组[1]
JSONObject
headParam2 = new JSONObject();
headParam2.put("arry1",
"java");
headParam2.put("classid",
"321546");
headParams.put(headParam1);
headParams.put(headParam2);
JSONArray
dataParams = new JSONArray();
JSONObject
dataParam = new JSONObject();
dataParam.put("java",
"ok");
dataParam.put("spring",
"yes");
dataParams.put(dataParam);
JSONObject
paramss = new JSONObject();
paramss.put("head",
headParams);
paramss.put("data",
dataParams);
Log.v("tag",
"params.toString() >>>
:"+paramss.toString());
// 绑定到请求 Entry
StringEntity se = new
StringEntity(paramss.toString());
request.setEntity(se);
// 发送请求
HttpResponse httpResponse = new
DefaultHttpClient().execute(request);
int statusCode =
httpResponse.getStatusLine().getStatusCode();
Log.v("tag", "statusCode <- :"+statusCode);
if (statusCode == 200) {
InputStream entityStream;
try {
entityStream =
httpResponse.getEntity().getContent();
String jsonString =
convertStreamToString(entityStream);
Log.v("tag", "jsonString <- :"+jsonString);
if ("".equals(jsonString))
return null;
JSONObject json = new
JSONObject(jsonString);
JSONObject head = json.getJSONObject("head");
Log.v("TAG", "name >>
:"+head.optString("name"));
return
json.optString("java");
}catch (Exception e) {
}
}
}catch (Exception e) {
}
return null;
}
private static String
convertStreamToString(InputStream is) {
StringBuilder
sb = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new
InputStreamReader(
is,
"UTF-8"), 8 * 1024);
String
line = null;
while
((line = reader.readLine()) != null) {
sb.append(line
+ "\n");
}
} catch
(IOException e) {
sb.delete(0,
sb.length());
} finally
{
try
{
is.close();
}
catch (IOException e) {
}
}
return
sb.toString();
}
服务端测试代码
public class LoadServlet extends HttpServlet {
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
StringBuffer messagebuffer =
new StringBuffer();
javax.servlet.ServletInputStream
in = request.getInputStream();
DataInputStream din = new
DataInputStream(in);
int ch;
while ((ch = din.read()) !=
-1)
messagebuffer.append((char)
ch);
din.close();
String message =
messagebuffer.toString();
System.out.println("content...>>>:"
+ message);
ByteArrayOutputStream bout =
new ByteArrayOutputStream();
DataOutputStream dout = new
DataOutputStream(bout);
byte str[] =
message.getBytes("UTF-8");
dout.write(str);
byte data[] =
bout.toByteArray();
OutputStream out =
response.getOutputStream();
out.write(data);
out.close();
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
public void init() throws ServletException
{
}
}
web.xml
<?xml version="1.0"
encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>jsontest</description>
<display-name>jsontest</display-name>
<servlet-name>jsonServlet</servlet-name>
<servlet-class>com.yihu.json.servlet.LoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsonServlet</servlet-name>
<url-pattern>/jsontest</url-pattern>
</servlet-mapping>
</web-app>
客户端按json数据格式封装数据传至服务端。
服务端为简单的servlet程序,负责接收客户端传到json数据,然后按原数据返回客户端.
实例代码如下:
public static String cmdLogIn() {
String urlString = "http://192.168.8.75:89/webroot/jsontest";
HttpPost request = new
HttpPost(urlString);
try{
//json数据格式{"data":{"spring":"yes","java":"ok"},
"head": {"password":"123456","name":"rarnu"}}
//封装代码
JSONObject headParam = new JSONObject();
headParam.put("name", "yihu");
headParam.put("password", "123456");
JSONObject
dataParam = new JSONObject();
dataParam.put("java", "ok");
dataParam.put("spring",
"yes");
JSONObject paramss = new JSONObject();
paramss.put("head",
headParam);
paramss.put("data",
dataParam);
//json数据格式
{"data":[{"spring":"yes","java":"ok"}],
"head":[{"password":"123456","name":"yihu"},{"arry1":"java","classid":"321546"}]}
JSONArray headParams = new
JSONArray();
//数组[0]
JSONObject
headParam1 = new JSONObject();
headParam1.put("name",
"yihu");
headParam1.put("password",
"123456");
//数组[1]
JSONObject
headParam2 = new JSONObject();
headParam2.put("arry1",
"java");
headParam2.put("classid",
"321546");
headParams.put(headParam1);
headParams.put(headParam2);
JSONArray
dataParams = new JSONArray();
JSONObject
dataParam = new JSONObject();
dataParam.put("java",
"ok");
dataParam.put("spring",
"yes");
dataParams.put(dataParam);
JSONObject
paramss = new JSONObject();
paramss.put("head",
headParams);
paramss.put("data",
dataParams);
Log.v("tag",
"params.toString() >>>
:"+paramss.toString());
// 绑定到请求 Entry
StringEntity se = new
StringEntity(paramss.toString());
request.setEntity(se);
// 发送请求
HttpResponse httpResponse = new
DefaultHttpClient().execute(request);
int statusCode =
httpResponse.getStatusLine().getStatusCode();
Log.v("tag", "statusCode <- :"+statusCode);
if (statusCode == 200) {
InputStream entityStream;
try {
entityStream =
httpResponse.getEntity().getContent();
String jsonString =
convertStreamToString(entityStream);
Log.v("tag", "jsonString <- :"+jsonString);
if ("".equals(jsonString))
return null;
JSONObject json = new
JSONObject(jsonString);
JSONObject head = json.getJSONObject("head");
Log.v("TAG", "name >>
:"+head.optString("name"));
return
json.optString("java");
}catch (Exception e) {
}
}
}catch (Exception e) {
}
return null;
}
private static String
convertStreamToString(InputStream is) {
StringBuilder
sb = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new
InputStreamReader(
is,
"UTF-8"), 8 * 1024);
String
line = null;
while
((line = reader.readLine()) != null) {
sb.append(line
+ "\n");
}
} catch
(IOException e) {
sb.delete(0,
sb.length());
} finally
{
try
{
is.close();
}
catch (IOException e) {
}
}
return
sb.toString();
}
服务端测试代码
public class LoadServlet extends HttpServlet {
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
StringBuffer messagebuffer =
new StringBuffer();
javax.servlet.ServletInputStream
in = request.getInputStream();
DataInputStream din = new
DataInputStream(in);
int ch;
while ((ch = din.read()) !=
-1)
messagebuffer.append((char)
ch);
din.close();
String message =
messagebuffer.toString();
System.out.println("content...>>>:"
+ message);
ByteArrayOutputStream bout =
new ByteArrayOutputStream();
DataOutputStream dout = new
DataOutputStream(bout);
byte str[] =
message.getBytes("UTF-8");
dout.write(str);
byte data[] =
bout.toByteArray();
OutputStream out =
response.getOutputStream();
out.write(data);
out.close();
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws
ServletException, IOException {
doGet(request, response);
}
public void init() throws ServletException
{
}
}
web.xml
<?xml version="1.0"
encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>jsontest</description>
<display-name>jsontest</display-name>
<servlet-name>jsonServlet</servlet-name>
<servlet-class>com.yihu.json.servlet.LoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsonServlet</servlet-name>
<url-pattern>/jsontest</url-pattern>
</servlet-mapping>
</web-app>
相关文章推荐
- android网络通讯数据封装之 json
- android网络通讯数据封装之 json
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- Android网络通讯——JSON,GSON解析网络数据
- Android开发案例:网络交互&XML与json数据解析&HttpUtil优化
- Android网络开发中如何使用JSON进行网络通信---Android_JSON数据通讯方法解析
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- Android之ListView&Json加载网络数据
- 网络数据解析(2) JSON
- android网络编程之json传输数据以及解析方式
- android使用JSON进行网络数据交换(服务端、客户端)的实现
- 【Android网络开发の4】解析和生成JSON数据
- Android JSON网络数据交换
- 【android初级】之Android之从网络上获取数据(图片,网页,xml,json等)
- Android开发18——获取网络资源之json数据
- Android之从网络中获取数据并返回客户端的两种方式:XML格式返回与Json格式返回
- Android 使用JSON进行网络数据交换
- android使用JSON进行网络数据交换(服务端、客户端)的实现
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- ping 原理与ICMP协议 && Android利用tcpdump和wireshark抓取网络数据包 && Android利用Fiddler进行网络数据抓包