HttpClient封裝工具類
阿新 • • 發佈:2021-06-23
package com.example.demo.util; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Component; import java.io.IOException; /** * @author lyd * @Description: * @date 17:21 */ @Component public class HttpClientUtils { private PoolingHttpClientConnectionManager poolingHttpClientConnectionManager; public HttpClientUtils() { this.poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(); // 設定最大連線數 poolingHttpClientConnectionManager.setMaxTotal(200); // 設定每個主機的併發數 poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20); } /** * 設定請求資訊 * * @return */ private RequestConfig getConfig() { // 配置資訊 RequestConfig requestConfig = RequestConfig.custom() // 設定連線超時時間 .setConnectTimeout(5000) // 設定請求超時時間 .setConnectionRequestTimeout(5000) // 設定讀寫超時時間 .setSocketTimeout(5000) // 設定是否允許重定向 .setRedirectsEnabled(true).build(); return requestConfig; } /** * get請求 * * @param url * @return */ public String doGet(String url) { // 獲取HttpClient物件 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(poolingHttpClientConnectionManager).build(); // 建立愛你httpGet請求,設定url地址 HttpGet httpGet = new HttpGet(url); // 設定請求資訊 httpGet.setConfig(getConfig()); // 使用HttpClient發起請求,獲取響應 CloseableHttpResponse closeableHttpResponse = null; try { closeableHttpResponse = httpClient.execute(httpGet); // 解析響應,返回結果 if (closeableHttpResponse.getStatusLine().getStatusCode() == 200) { // 判斷響應體是否不為空 if (closeableHttpResponse.getEntity() != null) { String content = EntityUtils.toString(closeableHttpResponse.getEntity(), "UTF-8"); return content; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (closeableHttpResponse != null) { // 關閉連線 closeableHttpResponse.close(); } // 不能關閉,現在使用的是連線管理器 // httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } return null; } /** * post請求 * * @param url * @return */ public String doPost(String url) { // 獲取HttpClient物件 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(poolingHttpClientConnectionManager).build(); // 建立愛你HttpPost請求,設定url地址 HttpPost httpPost = new HttpPost(url); // 設定請求資訊 httpPost.setConfig(getConfig()); // 使用HttpClient發起請求,獲取響應 CloseableHttpResponse closeableHttpResponse = null; try { closeableHttpResponse = httpClient.execute(httpPost); // 解析響應,返回結果 if (closeableHttpResponse.getStatusLine().getStatusCode() == 200) { // 判斷響應體是否不為空 if (closeableHttpResponse.getEntity() != null) { String content = EntityUtils.toString(closeableHttpResponse.getEntity(), "UTF-8"); return content; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (closeableHttpResponse != null) { // 關閉連線 closeableHttpResponse.close(); } // 不能關閉,現在使用的是連線管理器 // httpClient.close(); } catch (Exception e) { e.printStackTrace(); } } return null; } }