android http post 请求与 json字符串
一、目标
android客户端发送一个json格式的http的请求,期望得到服务端的一个json反馈。
1. 客户端发送的json格式为:
{"data" : "valueString"}
2. 服务端发送的json格式:
{
"errorCode" : "valueString",
"entries":[
{
"name":"海底捞",
"phone":"18800000110",
"url":"http://cater.haidilao.com/Cater/wap/index.action"
},
{
"name":"峨眉山",
"phone":"18800000119",
"url":"http://51youhui.baidu.com/emeishan"
},
...
{
"name":"中公教育",
"phone":"18800000666",
"url":"http://m.offcn.com"
}
]
}
3. 其中 json中映射的实体类类型定义如下:
public class Entry {
// 用戶名
private String name;
// 用戶号码
private String phone;
// 用户主页网址
private String url; public Entry() {
} public Entry(String name, String phone, String url) {
super();
this.name = name;
this.phone = phone;
this.url = url;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public boolean isSupportZhiDaHao() {
return this.url != null;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
}
}
二、引用包前提条件:
1. android客户端:
没有额外的包以来,所依赖的json包都包含在android sdk的org.json包下。
2 .服务端:
commons-beanutils-1.9.2.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
commons-logging-1.2.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
下载参考:http://www.mvnrepository.com/
三、客户端代码
1. android 客户端发送请求时的代码(使用httpClient):
// 测试服务器所在的项目URL
final String SERVER_URL = "http://172.22.148.49:8080/TestHttp/TestHttp";
HttpPost postRequest = new HttpPost(SERVER_URL);
// 构造请求的json串
JSONObject para = new JSONObject();
para.put("data", numStr);
StringEntity entity = new StringEntity(para.toString(), "utf-8");
HttpClient client = new DefaultHttpClient();
postRequest.setEntity(entity);
HttpResponse response = client.execute(postRequest);
2.android 客户端接受并解析服务端返回请求的json值:
List<Entry> items = new ArrayList<Entry>();
// 从response中读取所有字符格式的返回值
String entityString = EntityUtils.toString(response.getEntity());
// 将字符格式的返回值,映射成Json对象
JSONObject resJsonObj = new JSONObject(entityString);
// 尝试读取返回的json值中的statusCode字段
if (resJsonObj.getString(statusCode) == null
|| resJsonObj.getString(STATUS_CODE).isEmpty()
|| !resJsonObj.getString(STATUS_CODE).equals("ok")) {
return;
}
// 尝试解析所有以json数组形式返回的json对象
JSONArray entiesArray = resJsonObj.getJSONArray("entries");
for (int i = 0; i < entiesArray.length(); i++) {
JSONObject json = entiesArray.getJSONObject(i);
item = new Entry();
item.setName(json.getString("name"));
item.setPhonenum(json.getString("phone"));
item.setHomePageSites(json.getString("url"));
items.add(item);
}
四、服务端代码
1. 读取客户端的http请求,并解析出json参数(servlet 的doPost方法中):
// 答应http请求中的参数
String acceptjson = "";
BufferedReader br = new BufferedReader(new InputStreamReader(
request.getInputStream(), "utf-8"));
StringBuffer sb = new StringBuffer("");
String temp;
while ((temp = br.readLine()) != null) {
sb.append(temp);
}
br.close();
acceptjson = sb.toString();
String data = "";
JSONObject jo = JSONObject.fromObject(acceptjson);
data = jo.getString("data");
System.out.println("客戶端传来的参数为" + data);
2. 服务端完成针对请求参数中指定的值的处理后,决定返回上面我们约定的json格式json串:
// 创建json根对象
JSONObject mJson = new JSONObject();
// 创建json跟对象的子对象,里面存放对个实体类的值的json数组
JSONArray jsonArray = new JSONArray();
mJson.put("statusCode", "ok");
for (Entry entry : entries) {
if (!entry.getPhone().contains(data))
continue;
JSONObject json = new JSONObject();
json.put("name", entry.getName());
json.put("phone", entry.getPhone());
json.put("url", entry.getUrl());
jsonArray.add(json);
}
mJson.put("entries", jsonArray);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(mJson.toString());
五、注意事项(待续。。。)
1. 编码格式问题
2. android中HttpClient请求并发问题
3.http请求中一些参数的详解和设置
4. android 发https 请求
android http post 请求与 json字符串的更多相关文章
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- wemall app商城源码中基于JAVA通过Http请求获取json字符串的代码
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.分享其中关于通过Http请求获取json字符串的代码供 ...
- ajax请求返回json字符串/json对象 处理
1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...
- ajax post 请求发送 json 字符串
$.ajax({ // 请求方式 type:"post", // contentType contentType:"application/json", // ...
- ajax请求返回Json字符串运用highcharts数据图表展现数据
[1].[图片] Json字符串和highcharts数据图表展现.jpg 跳至 [1] code=26754#44745" rel="nofollow"> [2] ...
- 【Android进阶】Gson解析json字符串的简单应用
在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json.这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式, ...
- android通过httpClient请求获取JSON数据并且解析
使用.net创建一个ashx文件,并response.write json格式 public void ProcessRequest(HttpContext context) { context.R ...
- post请求参数Json字符串包含数组的校验和处理 -工作随记-备查工具
package com.xxxx.live.webapp.selvert; import java.io.BufferedReader; import java.io.IOException; imp ...
- post请求参数Json字符串包含数组的校验和处理
传入参数类型 {"aaa":"aaaa","bbb":"bbb","ccc":"ccc&q ...
随机推荐
- POJ 3437 Tree Grafting
题意:给出一个深度优先遍历树的up down顺序,求这棵树以及这棵树变为”左子右兄”树的高度 思路:直接dfs,x代表树1的高度,y代表树2的高度 #include<cstdio> #in ...
- iOS 带箭头菜单选项弹窗LFPopupMenu
一.效果图 由于是模拟器缩得比较小,一些细线可能显示不出来,不是bug哈. 二.用法 LFPopupMenuItem *item1 = [LFPopupMenuItem createWithTitle ...
- iptables最常用的规则示例
iptables v1.4.21 iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”.规则存储在内核空间的信息 ...
- 面试通用tips--来源某猎头人员
- 配置安全证书的Etcd集群
不知在哪篇技术文档中看到,kubernetes master和etcd分开部署模式,因为集群的状态都保存在etcd中,这样当kubernetes master挂掉后,通过API Server交互的Sc ...
- Java 定时任务 & 任务调度
任务调度是指基于 给定时间点,给定时间间隔 或者 给定执行次数 自动执行任务. 方式1:通过 Thread 来实现 例如如下的代码,可以每隔 1000 毫秒做一次打印操作. public class ...
- ajax常用请求方式
1.JAVA @RequestMapping(value = "testAjax") @ResponseBody public Map<String, Object> ...
- 各种软核处理器二进制文件FPGA初始化文件生成程序
不管是MIPS, Nios II, MicroBlaze, MSP430, 8051, OpenRISC, OpenSPARC, LEON2/LEON3等等软核处理器,在FPGA上实现的时候我们通常需 ...
- Node.js meitulu图片批量下载爬虫1.051
原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...
- liunx系统安装tomcat的方法
安装tomcat前需要先安装jdk,安装jdk的方法参考我的上一篇文章:liunx系统安装jdk的方法 1.下载tomcat 下载地址:http://tomcat.apache.org/downloa ...