当前无论是在互联网领域,还是物联网项目下,亦或者各类应用类软件,基于http标准接口的对接是目前市面上最常见也是最简单的数据交互方式之一,甚至可以说是最流行的,因为它不依赖的各种插件或者服务。
开发者或者提供服务商对对此乐此不疲,当然json数据格式的普及也是功不可没。这篇文章将教会你如何简单快速使用java对接一个第三方的接口。
一.springboot项目引入okhttp3的pom信息
官网信息如下:OkHttp3官网地址
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
二.使用okhttp发送post请求
以下代码可以直接参照使用,按照自己实际业务进行相应调整即可。相关json数据的转换均使用com.alibaba.fastjson的类
public String testOkhttpSendPostData(){
/**
* 初始化OkHttpClient
* 可以指定连接超时时间,读写时间等,避免因网络问题无法正常请求响应
*/
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.build();
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
//设置json格式的body参数
JSONObject reqObj = new JSONObject();
reqObj.put("pid","202101150001");
reqObj.put("name","okhttp");
reqObj.put("phone","010");
reqObj.put("source","test");
RequestBody requestBody = RequestBody.create(mediaType, JSONObject.toJSONString(reqObj));
//请求信息头一般根据接口文档要求自定义设置,以map形式表现
Map<String, String> reqHeadersObj = new HashMap<>();
reqHeadersObj.put("appId","接入方信息");
reqHeadersObj.put("ver","接口版本");
reqHeadersObj.put("sign","用户签名");
//发送请求并从响应中获取结果
Headers headers = Headers.of(reqHeadersObj);
Request request = new Request.Builder()
.url(externalDockUrl+"/base/testUrl")
.headers(headers)
.method("POST", requestBody)
.build();
String respStr = "";
try{
//同步执行
Response response = client.newCall(request).execute();
if(response.body()!=null){
respStr = response.body().string();
}
}catch (Exception e){
e.printStackTrace();
log.error("测试okhttp发送post请求异常->testOkhttpSendPostData():{}", e.getMessage());
return "测试okhttp发送post请求异常";
}
//解析并返回最终查询结果
if(StringUtils.isNotBlank(respStr)) {
JSONObject respObject = JSONObject.parseObject(respStr);
//判断是否是成功响应的数据
if (!"0".equals(respObject.getString("code"))) {
return "测试okhttp发送post请求信息未正常返回";
}
//此处可以按照自己实际的业务处理得到的响应数据
log.info("测试okhttp发送post请求信息成功->getJSVehAllDeviceData(),数据详情={}",respObject.getJSONObject("data").toJSONString());
}
return "success";
}
三.使用okhttp发送get请求
利用okhttp发送get请求关键代码展示如下
//创建OkHttpClient实例对象
OkHttpClient okHttpClient = new OkHttpClient();
//请求信息头一般根据接口文档要求自定义设置,以map形式表现
Map<String, String> reqHeadersObj = new HashMap<>();
reqHeadersObj.put("appId","接入方信息");
reqHeadersObj.put("ver","接口版本");
reqHeadersObj.put("sign","用户签名");
Headers headers = Headers.of(reqHeadersObj);
//创建Request对象
Request request = new Request.Builder()
.url(externalDockUrl+"/base/testGetUrl?id=010101")
.headers(headers)
.get()
.build();