public static void main(String[] args) throws Exception{
//httpclient連接池
//創建連接池
PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
//設置最大連接數
cManager.setMaxTotal(50);
//設置每個主機地址的並發數
cManager.setDefaultMaxPerRoute(20);
//執行i請求
doGet(cManager);
}
private static void doGet(PoolingHttpClientConnectionManager cm) throws Exception{
//從連接池獲取連接,每次不一樣
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
//設置http get
HttpGet httpGet = new HttpGet("https://www.baidu.com");
//設置請求參數
RequestConfig config = RequestConfig.custom().setConnectTimeout(5000) //連接超時時間
.setConnectionRequestTimeout(500) //從線程池中獲取線程超時時間
.setSocketTimeout(8000) //設置數據超時時間
.setStaleConnectionCheckEnabled(true) //提交請求前檢查連接是否可用
.build();
httpGet.setConfig(config);
//返回數據
CloseableHttpResponse response = null;
try {
response = httpClient.execute(httpGet);
String con = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(con);
}finally{
if(response!=null){
response.close();
}
httpClient.close();
}
}