1、pom添加内容
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1</version>
</dependency>
2、创建httpUtil
public class HttpUtil {
private static int socketTimeout = 1000;// 设置等待数据超时时间5秒钟 根据业务调整
private static int connectTimeout = 2000;// 连接超时
private static int poolSize = 100;// 连接池最大连接数
private static int maxPerRoute = 10;// 每个主机的并发最多10
/**
* 创建非异步的可关闭的且跳过https 验证的 httpClient
* @return
*/
public static CloseableHttpClient createSSLClientDefault() {
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return HttpClients.createDefault();
}
/**
* 创建异步的可关闭的跳过https验证的 httpClient对象
* @param connManager 连接管理器 可以调用本类的getConnManager 生成
* @return
*/
public static CloseableHttpAsyncClient getClient(PoolingNHttpClientConnectionManager connManager) {
if (null == connManager) {
return null;
}
// 设置连接参数
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(HttpUtil.socketTimeout).setConnectTimeout(HttpUtil.connectTimeout).build();
// 创建自定义的httpclient对象
CloseableHttpAsyncClient client = HttpAsyncClients.custom().setDefaultRequestConfig(requestConfig)
.setConnectionManager(connManager).disableCookieManagement().build();
return client;
}
/**
* 创建异步的可关闭的跳过https验证的 httpClient对象(绑定本地网卡)
* @param connManager
* @param localAddress
* @return
* @throws
*/
public static CloseableHttpAsyncClient getClient(PoolingNHttpClientConnectionManager connManager, String localAddress) throws UnknownHostException {
if (null == connManager || null == localAddress) {
return null;
}
String