![](/img/trans.png)
[英]How to set setMaxPerRoute in PoolingHttpClientConnectionManager?
[英]PoolingHttpClientConnectionManager: How to do Https requests?
我目前正在嘗試使用CloseableHttpClient
同時執行多個HttpGet
請求。
我搜索了如何做到這一點,答案是使用PoolingHttpClientConnectionManager
。
此時我得到了這個:
PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cManager)
.build();
然后我嘗試了http://www.google.com
的HttpGet
請求,一切正常。
然后我通過cmd創建了一個信任庫並導入了目標網站的證書,用我的信任庫設置了SSLConnectionSocketFactory
並設置了httpClient
的SSLSocketFactory
:
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
找到答案: https : //stackoverflow.com/a/19950935/1223253
只需添加
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create().register("https", sslsf).build();
並將socketFactoryRegistry
作為參數傳遞給socketFactoryRegistry
的構造PoolingHttpClientConnectionManager
。 現在它工作得很好:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.