easy-okhttp的簡介以及使用
阿新 • • 發佈:2022-04-11
easy-okhttp框架簡介
easy-okhttp是對okhttp3上層封裝的網路框架,支援檔案上傳和下載表單提交(檔案和一個引數對應多值),鏈式呼叫,並且預設整合Gson,對返回結果多種轉換,
同時還支援HTTPS單向認證和雙向認證等特性。
easy-okhttp框架特性
- 僅支援GET和POST兩種方式,其他如PUT等不太常用,就暫不支援
- 基於POST的大文字資料、二進位制檔案上傳,即通過Http Body提交
- 表單提交,帶有檔案的表單提交和表單提交支援引數名重複,在後臺接收到的是陣列或集合
- 支援session保持
- 對HTTPS支援單向認證和雙向認證
- 支援同步請求和非同步請求,統一的資料處理介面
- 開箱即用,預設的配置基本上滿足需求
easy-okhttp框架引入
<dependency>
<groupId>com.mzlion</groupId>
<artifactId>easy-okhttp</artifactId>
<version>1.0.7-beta</version>
</dependency>
普通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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> res = JSON.parseObject(responseData, Map.class);
if ((Integer) res.get("status") != NumberEnum.ZERO.getCode()) {
throw new BusinessException("介面失敗");
}