В настоящее время я пытаюсь выполнить несколько запросов 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-инструментов)
Заранее спасибо!
P.S.: я использую HttpComponents 4.3.1