httpClient调用接口的时候,解析返回报文内容
比如我httpclient调用的接口返回的格式是这样的:
一:data里是个对象
{
"code": 200,
"message": "执行成功",
"data": {
"userId": 1,
"userName": "Jamie",
"roles": "admin",
"realName": "测试人员",
"tel": "13651046002",
"email": "12345@qq.com",
"enabled": true
}
}
1.添加pom依赖
<!--集成lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> <!-- 集成json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
2.定义一个返回报文实体
/**
* @author: sujing
* @version: 1.0.0
* @ClassName: Return.java
* @date: 2019/10/11 16:24
* 返回报文封装
*/
@Data
public class Return<T> {
String code;
String message;
T data; public Return() {
} public Return(String code, String message) {
this.code = code;
this.message = message;
} public Return(String code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
}
3.解析httpclient返回的参数
//httpClient调用接口,返回String字符串
String httpClientReturn = HttpClientUtil.get("http://xxxxx:9099/jwtauthsvr/api/getUserInfoByName", request.getHeader("Authorization")); //转成JsonObject
JSONObject UserInfoReturn = JSON.parseObject(httpClientReturn); //转成自定义Return报文对象
Return returnMsg = JSON.toJavaObject(UserInfoReturn, Return.class); //获取报文里data参数
String JSONData = JSON.toJSONString(returnMsg.getData()); //转成UserInfo对象
UserInfo userInfo = JSON.parseObject(JSONData, UserInfo.class);
二:data里是个集合
{
"code": 200,
"message": "success",
"data": {
"total": 16,
"list": [
{
"userId": 1,
"userName": "Jamie",
"roles": "admin",
"realName": "测试人员",
"tel": "13651046002",
"email": "12345@qq.com",
"idCard": "1111111111",
"enabled": true,
"relType": 0,
"relId": 111098,
"password": "xxx",
"registrationTime": "2019-08-04 20:35:44",
"updateTime": "2019-08-04 20:35:44"
},
{
"userId": 2,
"userName": "Bruce",
"roles": "admin",
"realName": "测试人员2",
"tel": "13651046888",
"email": "wwee@qq.com",
"idCard": "370214199555555555",
"enabled": true,
"relType": 0,
"relId": 111099,
"password": "xxx",
"registrationTime": "2019-08-04 20:50:15",
"updateTime": "2019-08-04 20:50:15"
}
],
"pageNum": 1,
"pageSize": 25,
"size": 16,
"startRow": 1,
"endRow": 16,
"pages": 1,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1,
"firstPage": 1,
"lastPage": 1
}
}
1.解析httpclient返回的参数
//httpClient调用接口,返回String字符串
String httpClientReturn = HttpClientUtil.get("http://xxxxx:9099/jwtauthsvr/api/getUserInfoByName", request.getHeader("Authorization"));
//转成JsonObject
JSONObject UserInfoReturn = JSON.parseObject(httpClientReturn); //获取返回报文格式
Return returnMsg = JSON.toJavaObject(UserInfoReturn, Return.class); //获取报文里data参数
String JSONData = JSON.toJSONString(returnMsg.getData()); //获取data里的list
List<UserInfo> userInfoList = JSON.parseObject(JSONData, new TypeReference<List<UserInfo>>() {});
httpClient调用接口的时候,解析返回报文内容的更多相关文章
- 使用HttpClient调用接口
一,编写返回对象 public class HttpResult { // 响应的状态码 private int code; // 响应的响应体 private String body;get/set ...
- 使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果
这里接口用表存起来,标记请求方式,然后接受参数,消息或者请求参数都可以, 然后先是遍历需要调用的接口,封装参数,再分别调用get与post即可,没有微服务还是得自己写 //消息转发-获取参数中对应参数 ...
- java通过HttpClient调用接口总结
2.HttpClient 2.1简介: 最近看项目的代码,看到工程中有两个jar包张的很像,一个是commons.httpclient-3.1.jar,一个是httpclient4.2.1.jar,很 ...
- 使用httpClient调用接口获取响应数据
转自:https://blog.csdn.net/shuaishuaidewo/article/details/81136088 import lombok.extern.slf4j.Slf4j; i ...
- VB调用WebService(SOA2.0接口)(直接Post方式)并解析返回的XML
SOA 2.0接口 Function GetDepartmentCode(reqDeptCode) Dim soaRequestXML : soaRequestXML = "" D ...
- 调用中行接口针对返回报文(xml形式)做相关处理
最近在对接中行银行接口,在获取返回报文的时候遇到一些问题,现在在这里做个总结 TIP: 在返回报文之前,要对前置机的URL请求,在这期间遇到一个坑,还是通过查看日志才发现问题 在填写转账信息的时候要求 ...
- webService 发送soap请求,并解析返回的soap报文
本例应用场景:要做一个webService测试功能,不局限于任何一种固定格式的webService,所以像axis,cxf等框架就不好用了.只有深入到webService的原理,通过发收soap报文, ...
- 使用HttpClient调用第三方接口
最近项目中需要调用第三方的Http接口,这里我用到了HttpClient. 首先我们要搞明白第三方接口中需要我们传递哪些参数.数据,搞明白参数以后我们就可以使用HttpClient调用接口了. 1.调 ...
- Java 发送SOAP请求调用WebService,解析SOAP报文
https://blog.csdn.net/Peng_Hong_fu/article/details/80113196 记录测试代码 SoapUI调用路径 http://localhost:8082/ ...
随机推荐
- python函数:装饰器、修正、语法糖、有参装饰器、global与nonlocal
一.装饰器 二.装饰器修正1 三.装饰器修正2 四.装饰器的语法糖 五.有参.无参装饰器 六.global与nonlocal 一.装饰器 ''' 1 什么是装饰器 器=>工具 装饰=>指的 ...
- 解决canvas图片getImageData,toDataURL跨域问题
图片服务器需要配置Access-Control-Allow-Origin 当需要需要对canvas图片进行getImageData()或toDataURL()操作的时候,跨域问题就出来了.图片服务器需 ...
- Matrix Factorization in RecSys
矩阵分解在推荐系统中的应用. 参考链接:知乎. 传统SVD,Funk-SVD,Bias-SVD,SVD++. SVD奇异值分解及其意义. 漫谈奇异值分解.
- 生成静态libevent
INCLUDE C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include D:\vs2013\VC\include LIB C:\Prog ...
- PAM安全认证模块
- JAVA bean为何要实现序列化
简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象.即序列化出于两个原因:①.用于持久化到磁盘上:②.用于作为数据流在网络上传输. 所谓的Serializable,就是java提供 ...
- Python之import方法引入模块详解
在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...
- cookie生命周期expires 时间过期,但是cookie没有被浏览器清理的问题
cookie生命周期expires 时间过期,但是cookie没有被浏览器清理的问题 今天用nodejs起了一个web服务,使用art-template模板引擎渲染出来的页面,在这里我设置了一个coo ...
- java+大文件上传解决方案
众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...
- java+根据多个url批量下载文件
1.基本流程 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象. (2)服务器解析url,并且 ...