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 ...
随机推荐
- 星际争霸 虚空之遗 人族5BB 操作流程
人族5BB rush timing 3min-3min30 一波战术,对面双开不侦察应该就GG了. 14农民BS,建议在第一个BS后的100矿,马上接上一个BS堵口,基本上对面是侦察不到的,特别是内双 ...
- iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)
一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 //一般view上加角标 _badge1 = [[LFBadge alloc] init ...
- php中文件上传需要注意的几点
1.首先要开启php.ini中的文件上传,打开php.ini 配置文件,查找 File Uploads ,在这个区域有以下3个选项: ;;;;;;;;;;;;;;;; ; File Uploads ; ...
- php判断手机客户端
<?php // check if wap function check_wap(){ if(stristr($_SERVER['HTTP_VIA'],"wap")){// ...
- BlackBerry10 开发环境搭建
最近开始学习BlackBerry10的开发,黑莓10系统是2013年1月30日黑莓公司正式发布的,目前网上资料比较少,这篇博客的内容基本上是按照官网上的文档写的.BlackBerry10目前支持C/C ...
- Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记
Maven创建项目 略…具体过程可参考用Maven创建第一个web项目 配置Spring MVC 导入Spring MVC 需要的包在pom.xml 文件下加入: 123456789101112 &l ...
- Android 卡顿优化 2 渲染优化
1.概述 2015年初google发布了Android性能优化典范,发了16个小视频供大家欣赏,当时我也将其下载,通过微信公众号给大家推送了百度云的下载地址(地址在文末,ps:欢迎大家订阅公众号),那 ...
- Android内存优化5 了解java GC 垃圾回收机制3
引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...
- soap-学习
1. SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息. 简单的说:SOAP是用于访问网络服务的协议. 2. 什么是SOAP SOAP 指简易对象访问协议 SOAP ...
- Dedecms会员中心注入漏洞
详细说明: member/buy_action.php require_once(dirname(__FILE__)."/config.php"); CheckRank(0 ...