采用连接池的方式创建httpClient
package com.qjb.util;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
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 java.util.Map;
import java.util.Set;
/**
* httpclient连接池
*/
public class HttpClientPoolUtils {
private static CloseableHttpClient httpClient;
private static PoolingHttpClientConnectionManager poolingHttpClientConnectionManager;
private final String CHARSET="utf-8";
//最多接受数量
private static final int MAX_CONN_TOTAL=10;
//服务每次能并行接受的请求数量
private static final int MAX_CONN_PERROUTE=5;
static {
poolingHttpClientConnectionManager=initPool();
}
//初始化线程池
public static PoolingHttpClientConnectionManager initPool(){
PoolingHttpClientConnectionManager pool=new
PoolingHttpClientConnectionManager();
pool.setMaxTotal(MAX_CONN_TOTAL);
pool.setDefaultMaxPerRoute(MAX_CONN_PERROUTE);
return pool;
}
//采用单列模式(懒汉式)创建httpclient
public static HttpClient getHttpClient(){
if (httpClient != null){
return httpClient;
}
synchronized (HttpClientPoolUtils.class){
if (httpClient == null){
//采用连接池创建httpClient
httpClient= HttpClients.custom().setConnectionManager(poolingHttpClientConnectionManager).build();
return httpClient;
}
}
return httpClient;
}
/**
* get请求
* @param data
* @param heads
* @return
*/
public String get(String url, String data, Map<String,String> heads){
String result = "";
//创建get请求
HttpGet httpGet = new HttpGet(url+"/"+data);
if (heads != null) {
Set<String> keySet = heads.keySet();
for (String s : keySet) {
httpGet.addHeader(s, heads.get(s));
}
}
try {
HttpResponse httpResponse = getHttpClient().execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null) {
result = EntityUtils.toString(httpEntity, CHARSET);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//关闭连接池
poolingHttpClientConnectionManager.close();
}
return result;
}
}