public class HttpUtil {
private PoolingHttpClientConnectionManager cm;
private CloseableHttpClient httpClient;
private RequestConfig requestConfig;
//将請求連接配接池設定為單例
private static class SingletonCreater{
private static final HttpUtil httpUtil = new HttpUtil();
}
public static final HttpUtil getInstance(){
return SingletonCreater.httpUtil;
}
private HttpUtil() {
cm = new PoolingHttpClientConnectionManager();
//連接配接池最大生成連接配接數
cm.setMaxTotal(800);
// 預設設定route最大連接配接數
cm.setDefaultMaxPerRoute(800);
// 指定專門的route,設定最大連接配接數,因為IP隻有一個,不需要設定指定IP的最大連接配接數量
// HttpHost localhost = new HttpHost("locahost", 80);
// cm.setMaxPerRoute(new HttpRoute(localhost), 50);
// 設定重定向政策
// LaxRedirectStrategy redirectStrategy = new LaxRedirectStrategy();
//設定請求和傳輸逾時時間
requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(600000)
.setConnectTimeout(FinalCode.REQUEST_TIMEOUT)
.setSocketTimeout(FinalCode.REQUEST_SOCKET_TIME).build();
// 建立httpClient
httpClient= HttpClients.custom()
.setConnectionManager(cm)
.setDefaultRequestConfig(requestConfig)
// .setRedirectStrategy(redirectStrategy)
.build();
}
public CloseableHttpClient getHttpClient() {
return httpClient;
}
}