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":"","name":"rarnu"}}
//封装代码
JSONObject headParam = new JSONObject();
headParam.put("name", "yihu");
headParam.put("password", ""); 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":"","name":"yihu"},{"arry1":"java","classid":""}]} JSONArray headParams = new JSONArray();
//数组[0]
JSONObject headParam1 = new JSONObject();
headParam1.put("name", "yihu");
headParam1.put("password", "");
//数组[1]
JSONObject headParam2 = new JSONObject();
headParam2.put("arry1", "java");
headParam2.put("classid", "");
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 == ) {
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"), * );
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
} catch (IOException e) {
sb.delete(, 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()) != -)
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的更多相关文章

  1. android 网络通讯

    //get方式请求网络数据 String urlPath="http://192.168.98.112:8080/CloudMusicPlayer/fragment1_1_lv2/json/ ...

  2. 网络通讯数据.传输json(java<==>C#)

    ZC:主要是测试解决 时间转成JSON不一样的问题 ZC:java中转换时间格式的关键是“JSONUtils.getMorpherRegistry().registerMorpher(new Date ...

  3. [置顶] android网络通讯之HttpClient4不指定参数名发送Post

    在HttpClient4之前都是通过List<NameValuePair>键值对的形式来向服务器传递参数 ,在4.0版本中在加入了不指定参数名发送数据的形式,利用StringEntity来 ...

  4. 网络--三种网络通讯方式及Android的网络通讯机制

    Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功 ...

  5. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. Android开发之从网络URL上下载JSON数据

    网络下载拉取数据中,json数据是一种格式化的xml数据,非常轻量方便,效率高,体验好等优点,下面就android中如何从给定的url下载json数据给予解析: 主要使用http请求方法,并用到Htt ...

  7. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  8. Android网络框架Volley(体验篇)

    Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...

  9. Android网络编程概述

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

随机推荐

  1. [树结构]平衡二叉树AVL

    平衡二叉树是一种二叉排序树,其中每一个节点的左子树和右子树的高度至多等于1,平衡二叉树又称为AVL树. 将二叉树节点的左子树深度减去右子树深度的值称为平衡因子BF,平衡二叉树上所有节点的平衡因子只可能 ...

  2. 浅谈C中的指针和数组(三)

    上一个博客我们得到了一个结论: 指针和数组根本就是两个完全不一样的东西.只是它们都可以“以指针形式”或“以下标形式”进行访问.一个是完全的匿名访问,一个是典型的具名+匿名访问.一定要注意的是这个“以X ...

  3. python dict traversal

    rs=dict() rs['item1'] = 'item1' rs['item2'] = 'item2' for k,d in rs.items(): print k,d for k in rs.k ...

  4. php消息队列

    Memcache 一般用于缓存服务.但是很多时候,比如一个消息广播系统,需要一个消息队列.直接从数据库取消息,负载往往不行.如果将整个消息队列用一个key缓存到memcache里面.对于一个很大的消息 ...

  5. spring 源码之IOC 类图

    Spring IoC容器是spring框架的核心和基础,IoC容器负责spring Bean的生命周期,是spring框架实现其他扩展功能的基础.容器的继承结构比较复杂,这里画出了spring IoC ...

  6. uvalive 6888 Ricochet Robots bfs

    题目链接 给一个n*m的图, 图上有n个标号, n<=4, 然后有墙, 还有一个终点x. 每一步, 只能走某一个标号, 可以向四个方向走, 然后必须要碰到墙或者图的边界或者另一个标号才能停下来. ...

  7. IP校验和

    #include <stdio.h> #include <unistd.h> #include <linux/if_ether.h> #include <li ...

  8. 2.java.lang.NullPointerException(空指针异常)

    调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针, 即把数组的初始化和数组元素的初始化混淆起来 ...

  9. WinSetupFromUSB – Install Windows XP from USB Flash Drive

    http://myeeeguides.wordpress.com/2008/11/15/winsetupfromusb-install-windows-xp-from-usb-flash-drive/ ...

  10. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(九)

    目的 1. 使用verilog/vhdl设计一个PCI的watchdog设备. 2. 通过systemverilog 写testbench. 很久之前研究过AC97的verilog代码.但是很久没用v ...