我正在尝试同时做多个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