FastJson - 从HttpEntity到Json
在使用java + httpClient施行API自动化时,不可避免地遇到了如下问题:
1. 用Http Response数据做断言;
2. 用上一个请求的Response内容,作为下一个请求的参数;
如果用jmeter来做的话,首选当然是BeanShell。然而,当需要自己写的时候(通过java + httpClient),在此我用到了FastJson。
1. 以一个Post请求为例,代码如下:
public CloseableHttpResponse post(String url , String entityString , HashMap<String , String> headermap)
throws ClientProtocolException, IOException {
//创建一个可关闭的 httpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//创建一个HttpPost的请求对象
HttpPost httpPost = new HttpPost(url);
//设置payload
httpPost.setEntity(new StringEntity(entityString));
//加载请求头到HttpPost对象
for (Map.Entry<String , String> entry : headermap.entrySet()) {
httpPost.addHeader(entry.getKey(), entry.getValue());
}
//发送post请求
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
return httpResponse;
}
2. 发送Post请求后,我们会得到一个CloseableHttpResponse。接下来,我们提取状态码(status):
int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();
3. 提取返回实体(httpEntity):
HttpEntity entity = closeableHttpResponse.getEntity();
System.out.println(entity);
此时的输出结果为:

4. HttpEntity 转化为 String:
String responseEntity = EntityUtils.toString(entity);
System.out.println(responseEntity);
此时的输出结果为String格式,提取code、message等值,只能通过字符串截取:

5. String 转化为 JsonObject:
JSONObject jsonObject = JSON.parseObject(responseEntity);
System.out.println(jsonObject);
此时的输出结果为JsonObject格式:

6. 提取code、message的值:
String responseCode = jsonObject.getString("code");
String responseMessage = jsonObject.getString("message");
7. 提取orderId:
//由于info的值是json格式(或可理解为key-value集合),提取info的值为JSONObject格式
JSONObject infoObject = jsonObject.getJSONObject("info");
//重复步骤6,提取orderId
String orderId= jsonObject.getString("orderId");
//或通过将infoObject转化为HashMap,再进行提取orderId
HashMap<String, Object> info = new HashMap<String, Object>();
info = JSON.parseObject(String.valueOf(infoObject), new TypeReference<HashMap<String, Object>>() {});
String orderId = info.get("orderId").toString();
FastJson - 从HttpEntity到Json的更多相关文章
- java分享第十三天(fastjson生成和解析json数据,序列化和反序列化数据)
fastjson简介:Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- fastjson生成和解析json数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- 记一次FastJSON和Jackson解析json时遇到的中括号问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/24395015 完整版见https://jadyer. ...
- Java基础/利用fastjson序列化对象为JSON
利用fastjson序列化对象为JSON 参考博客:http://blog.csdn.net/zeuskingzb/article/details/17468079 Step1:定义实体类 //用户类 ...
- fastJson java后台转换json格式数据
什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- FastJSON 简介及其Map/JSON/String 互转
在日志解析,前后端数据传输交互中,经常会遇到 String 与 map.json.xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言.跨前后端的事实上的标准数据交互格式.应该来说各个 ...
- jackjson和fastjson进行Bean与json互换
1.jackjson 1.bean到json ObjectMapper m = new ObjectMapper(); String value = m.writeValueAsString(bean ...
- json小结和fastjson包的实际json操作
工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题. 一.json是什么 ...
随机推荐
- 如何用C#对Gridview的项目进行汇总统计?
上一次用了javascript对gridview进行了汇总统计,但那个统计是在客户端进行的,虽然减轻了服务器的负担,但是,当需要把统计信息汇出excel时,汇总信息却死活不出来了,所以,绕半天又绕回来 ...
- 微信小程序开发——进阶篇
由于项目的原因,最近的工作一直围绕着微信小程序.现在也算告一段落,是时候整理一下这段时间的收获了.我维护的小程序有两个,分别是官方小程序和一个游戏为主的小程序.两个都是用了wepy进行开发,就是这个: ...
- 微信小程序,搜索结果关键词高亮 wxml不能动态识别html标签
wxml中使用rich-text标签放置动态html标签 js:
- LeetCodee 105. Construct Binary Tree from Preorder and Inorder Traversal
问题重述: 问题求解: 我们换一组比较有代表性的样例, 对于上图的树来说, index: 0 1 2 3 4 5 6 先序遍历为: 中序遍历为: 5同理,右子树也是如此.这样不难看出本题应该用递归方法 ...
- 嗨翻C语言笔记(一)
对自己狠一点,逼自己努力,总有一天你会感谢今天的自己! C语言不支持现成的字符串, 只能用数组表示. & (and)运算, 即两个数的每个二进制位都进行比较, 对等位均为1时为1, 否则为0. ...
- mysql使用数据库
哈哈 只能怪自己太菜哈 刚接触这个MySQL没多久 今天用终端登陆MySQL的时候mysql -u root -p 然后就想看看自己的数据库 我用的MySQL的客户端是navicat for mysq ...
- Ubuntu 16.04LTS 更新清华源
1 备份原来的更新源 cp /etc/apt/sources.list /etc/apt/sources.list.backup 如果提示权限不够就输入下面两行,先进入到超级用户,再备份 sudo - ...
- shell基础知识---与监听服务器长连接端口状态
从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容 一.变量 变量的定义 string='字符串' string="字符串" num=808st ...
- Ubuntu之C++开发环境的搭建
初学Linux,今天反复卸载与重装微软商店的Ubuntu好几次,终于解锁了在Ubuntu上搭建C++开发环境的正确姿势, 搭建了一个非常简单的开发环境:简单到什么地步呢?只是简单地配置了一下编辑器,安 ...
- js滚动监听
下边代码,是监听滚动条只要移动,下方的返回顶部的div显示与隐藏的代码 ? 1 2 3 4 5 6 7 8 window.onscroll = function () { var t = docum ...