android网络通讯数据封装之 json
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的更多相关文章
- android 网络通讯
//get方式请求网络数据 String urlPath="http://192.168.98.112:8080/CloudMusicPlayer/fragment1_1_lv2/json/ ...
- 网络通讯数据.传输json(java<==>C#)
ZC:主要是测试解决 时间转成JSON不一样的问题 ZC:java中转换时间格式的关键是“JSONUtils.getMorpherRegistry().registerMorpher(new Date ...
- [置顶] android网络通讯之HttpClient4不指定参数名发送Post
在HttpClient4之前都是通过List<NameValuePair>键值对的形式来向服务器传递参数 ,在4.0版本中在加入了不指定参数名发送数据的形式,利用StringEntity来 ...
- 网络--三种网络通讯方式及Android的网络通讯机制
Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功 ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android开发之从网络URL上下载JSON数据
网络下载拉取数据中,json数据是一种格式化的xml数据,非常轻量方便,效率高,体验好等优点,下面就android中如何从给定的url下载json数据给予解析: 主要使用http请求方法,并用到Htt ...
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...
- Android网络框架Volley(体验篇)
Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...
- Android网络编程概述
Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...
随机推荐
- Ubuntu下使用Vi时方向键变乱码 退格键不能使用的解决方法
要在Ubuntu下编辑一些文件,这就涉及到了vi这个编辑器了.在Ubuntu下,初始使用vi的时候有点问题,就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D ...
- SQL Server 启用与禁止触发器
启用: disable trigger trigger_name on {objectName | database_name | server}; 禁用: enable trigger trigge ...
- android 添加左右滑屏手势
今天要在自己的项目中添加左右滑动,实现日期的加减(原来已经做了加减按键).滑动在一个中间的layout中进行 思路:添加左右划屏幕判断,得到判断后模拟加减按键按下. 模拟按键按下用 mbotton.p ...
- 采购件不允许挂BOM
应用 Oracle Bill Of Materiel 层 Level Function 函数名 Funcgtion Name BOM_BOMFDBOM 表单名 Form Name BOMFDBOM ...
- 对手机SD卡的一些操作
首先要导入外包 log4j-1.2.16.jar 代码如下: package com.car273.util; import java.io.BufferedReader; import java.i ...
- Windows 7妙用 笔记本变无线AP轻松共享
笔记本变AP的前提和应用原理 笔记本变AP的前提是你所处的房间或地点需要提供有线宽带的连接,而且你的笔记本要有无线网卡.如果这两个条件具备了,即使没有路由器/无线AP等辅助设备,多个笔记本电脑共享上网 ...
- ICON图标文件解析
icon是一种图标格式,用于系统图标.软件图标等,这种图标扩展名为*.icon.*.ico.常见的软件或windows桌面上的那些图标一般都是ICON格式的. ICON文件格式比较简单,包含文件头段. ...
- POJ 2686 Traveling by Stagecoach 壮压DP
大意是有一个人从某个城市要到另一个城市(点数<=30) 然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票. 花费的时间呢,是马车票上有个速率值,用边/速率就是花的时间. 问最后这个人花费 ...
- oracle字符集
oracle server端字符集
- 解决ArcSDE图层名被占用的问题
点击文章查看 当你发现上面那篇文章时你已经接近成功了,但还差最后一步! <!- -delete from sde.GDB_OBJECTCLASSES where NAME = upper(' ...