- 方法一:
private CloseableHttpClient getSelfSignedClient() throws Exception {
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
NoopHostnameVerifier.INSTANCE);
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(10000)
.setConnectTimeout(10000)
.setConnectionRequestTimeout(10000)
.build();
return HttpClients.custom().setDefaultRequestConfig(requestConfig).setSSLSocketFactory(sslsf).build();
}
- 方法二:
SSLContext sc = null;
try {
sc = SSLContext.getInstance("SSLv3");
} catch (NoSuchAlgorithmException e1) {
log.error("SSLContext创建失败");
}
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
try {
sc.init(null, new TrustManager[] { trustManager }, null);
} catch (KeyManagementException e) {
log.error("SSLContext初始化失败");
}
//设置协议http和https对应的处理socket链接工厂的对象
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sc))
.build();
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
connManager.setMaxTotal(200);// 将最大连接数增加到200
connManager.setDefaultMaxPerRoute(20);// 将每个路由基础的连接增加到20
HttpHost localhost = new HttpHost(ip, 80);
connManager.setMaxPerRoute(new HttpRoute(localhost), 10);//将目标主机的最大连接数增加到10
HttpClients.custom().setConnectionManager(connManager);
CloseableHttpClient buildHttpClient = HttpClients.custom()
.setConnectionManager(connManager)
.build();