您的位置:首页 > 理论基础 > 计算机网络

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: