PoolingHttpClientConnectionManager:如何执行Https请求?
2022-09-03 17:45:10
我目前正在尝试使用 同时执行多个请求。
我用谷歌搜索了如何做到这一点,答案是使用.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工具)
提前致谢!
附言:我正在使用HttpComponents 4.3.1