我目前正在嘗試使用CloseableHttpClient
同時處理多個HttpGet
請求。
我搜索瞭如何做到這一點,答案是使用PoolingHttpClientConnectionManager
。
PoolingHttpClientConnectionManager:如何做Https請求?
在這一點上,我得到這個:
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工具)
在此先感謝!
P.S:我使用的是HttpComponents 4.3.1
如何使用PoolingHttpClientConnectionManager創建後,我的代碼正在工作,但我想知道連接池是否有效 – Labeo
打開客戶端日誌記錄以檢查連接池中的租約:http:/ /hc.apache.org/httpcomponents-client-ga/logging.html –