運用HttpClient呼叫其它專案的介面
阿新 • • 發佈:2020-08-07
首先引入依賴
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency>
private final int timeOut = 500;
public String queryString(String code) { // 獲得Http客戶端(可以理解為:先有一個瀏覽器;注意:實際上HttpClient與瀏覽器是不一樣的)CloseableHttpClient httpClient = HttpClientBuilder.create().build(); // 引數 StringBuffer params = new StringBuffer(); try { // 字元資料最好encoding下;這樣一來,某些特殊字元才能傳過去(如:某人的名字就是“&”,不encoding的話,傳不過去) params.append("code=" + URLEncoder.encode(code, "utf-8")); }catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } // 建立Get請求 HttpGet httpGet = new HttpGet(192.168.xx.xx:port/xx/queryString); // 響應模型 CloseableHttpResponse response = null; try { // 配置資訊 RequestConfig requestConfig = RequestConfig.custom()// 設定連線超時時間(單位毫秒) .setConnectTimeout(timeOut) // 設定請求超時時間(單位毫秒) .setConnectionRequestTimeout(timeOut) // socket讀寫超時時間(單位毫秒) .setSocketTimeout(timeOut) // 設定是否允許重定向(預設為true) .setRedirectsEnabled(true).build(); // 將上面的配置資訊 運用到這個Get請求裡 httpGet.setConfig(requestConfig); // 由客戶端執行(傳送)Get請求 response = httpClient.execute(httpGet); // 從響應模型中獲取響應實體 HttpEntity responseEntity = response.getEntity(); System.out.println("響應狀態為:" + response.getStatusLine()); if (responseEntity != null) { System.out.println("響應內容長度為:" + responseEntity.getContentLength()); System.out.println("響應內容為:" + EntityUtils.toString(responseEntity)); String json = EntityUtils.toString(responseEntity); String result = JsonUtil.fromJson(json, String.class); if(null!= result ){ return result ; } } else { return null; } } catch (Exception e) { //todo 此處做異常處理返回 //e.printStackTrace();return ("與資料服務連線異常!"); } finally { closeClient(httpClient, response); } return null; }