easy-okhttp的简介以及使用
easy-okhttp框架简介
easy-okhttp是对okhttp3上层封装的网络框架,支持文件上传和下载表单提交(文件和一个参数对应多值),链式调用,并且默认整合Gson,对返回结果多种转换,
同时还支持HTTPS单向认证和双向认证等特性。
easy-okhttp框架特性
- 仅支持GET和POST两种方式,其他如PUT等不太常用,就暂不支持
- 基于POST的大文本数据、二进制文件上传,即通过Http Body提交
- 表单提交,带有文件的表单提交和表单提交支持参数名重复,在后台接收到的是数组或集合
- 支持session保持
- 对HTTPS支持单向认证和双向认证
- 支持同步请求和异步请求,统一的数据处理接口
- 开箱即用,默认的配置基本上满足需求
easy-okhttp框架引入
com.mzlion
easy-okhttp
1.0.7-beta
普通GET请求
String timeStamp = String.valueOf(System.currentTimeMillis() / NumberEnum.THOUSAND.getCode());
String md5DigestAsHex = DigestUtils.md5DigestAsHex((apiKey + "00001" + timeStamp + salt).getBytes());
String responseData = HttpClient
.get(url + "/piccre/aml-server/api/aml/outside/v1/queryRiskGradeInfo")
.header("apiKey", apiKey)
.header("apiCode", "00001")
.header("timeStamp", timeStamp)
.header("sign", md5DigestAsHex)
.execute()
.asString();
Map map = JSON.parseObject(responseData, Map.class);
if ((Integer) map.get("status") != NumberEnum.ZERO.getCode()) {
throw new BusinessException("接口失败");
}
普通GET请求带参数
String timeStamp = String.valueOf(System.currentTimeMillis() / NumberEnum.THOUSAND.getCode());
String md5DigestAsHex = DigestUtils.md5DigestAsHex((apiKey + "00005" + timeStamp + salt).getBytes());
String responseData = HttpClient
.get(url + "/piccre/aml-server/api/aml/outside/v1/getRiskGradeHis")
.header("apiKey", apiKey)
.header("apiCode", "00005")
.header("timeStamp", timeStamp)
.header("sign", md5DigestAsHex)
.queryString("idKey",applyReinsCode)
.execute()
.asString();
Map res = JSON.parseObject(responseData, Map.class);
if ((Integer) res.get("status") != NumberEnum.ZERO.getCode()) {
throw new BusinessException("接口失败");
}
普通表单POST
一般POST提交都是基于表单提交,即提交的时候会携带Content-Type="application/x-www-form-urlencoded"使用方式如下:
String timeStamp = String.valueOf(System.currentTimeMillis() / NumberEnum.THOUSAND.getCode());
String md5DigestAsHex = DigestUtils.md5DigestAsHex((apiKey + "00005" + timeStamp + salt).getBytes());
String responseData = HttpClient
.post(url + "/piccre/aml-server/api/aml/outside/v1/getRiskGradeHis")
.header("apiKey", apiKey)
.header("apiCode", "00005")
.header("timeStamp", timeStamp)
.header("sign", md5DigestAsHex)
.param("idKey","小勾")
.param("age","18")
.execute()
.asString();
Map res = JSON.parseObject(responseData, Map.class);
if ((Integer) res.get("status") != NumberEnum.ZERO.getCode()) {
throw new BusinessException("接口失败");
}
String提交POST
所谓String提交POST,就是将一段字符串直接扔进Request请求中,字符串一般都是有格式约定的,比如是xml、json或其他等。
比如像微信开放平台(https://mp.weixin.qq.com/)的接口,所有数据提交方式就是这种。
String timeStamp = String.valueOf(System.currentTimeMillis() / NumberEnum.THOUSAND.getCode());
String md5DigestAsHex = DigestUtils.md5DigestAsHex((apiKey + "00003" + timeStamp + salt).getBytes());
String responseData = HttpClient
.textBody(url + "/piccre/aml-server/api/aml/outside/v1/getRiskResult")
.header("apiKey", apiKey)
.header("apiCode", "00003")
.header("timeStamp", timeStamp)
.header("sign", md5DigestAsHex)
.json(JSON.toJSONString(antiMoneyLaunderDto))
.execute()
.asString();
Map res = JSON.parseObject(responseData, Map.class);
if ((Integer) res.get("status") != NumberEnum.ZERO.getCode()) {
throw new BusinessException("接口失败");
}