我目前正在尝试同时执行多个HttpGet
请求CloseableHttpClient
。
我用谷歌搜索了如何做到这一点,答案是使用PoolingHttpClientConnectionManager
.
在这一点上,我得到了这个:
PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cManager)
.build();
然后我尝试了一个HttpGet
请求http://www.google.com
,一切正常。
然后我通过 cmd 创建了一个信任库并导入了目标网站的证书,SSLConnectionSocketFactory
使用我的信任库设置了一个并设置SSLSocketFactory
了httpClient
:
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream inputStream = new FileInputStream(new File("myTrustStore.truststore"));
trustStore.load(inputStream, "nopassword".toCharArray());
inputStream.close();
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(trustStore).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.setConnectionManager(cManager)
.build();
如果我尝试执行 Https,HttpGet
则会出现PKIX path building failed
异常。
如果我在没有.setConnectionManager(cManager)
一切正常的情况下做同样的事情。
你们中的任何人都可以告诉我如何让它工作吗?(别担心,我没有创建任何 ddos 工具)
提前致谢!
PS:我正在使用 HttpComponents 4.3.1