當前無論是在互聯網領域,還是物聯網項目下,亦或者各類應用類軟件,基于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();