PoolingHttpClientConnectionManager: Jak wykonywać żądania HTTP?
Obecnie próbuję zrobić wieleHttpGet
prośby w tym samym czasieCloseableHttpClient
.
Sprawdziłem, jak to zrobić, a odpowiedź brzmiała: aPoolingHttpClientConnectionManager
.
W tym momencie mam to:
PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cManager)
.build();
Potem spróbowałemHttpGet
poprosić ohttp://www.google.com
i wszystko działało dobrze.
Następnie utworzyłem magazyn zaufanych certyfikatów za pomocą cmd i zaimportowałem certyfikat docelowej witryny internetowej, aSSLConnectionSocketFactory
z moim zaufanym magazynem i ustawSSLSocketFactory
zhttpClient
:
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();
Jeśli spróbuję wykonać HttpsHttpGet
wtedy dostajęPKIX path building failed
wyjątek.
Jeśli zrobię to samo bez.setConnectionManager(cManager)
wszystko dziala.
Czy ktoś z was może mi powiedzieć, jak mogę to zrobić? (Nie martw się, nie tworzę żadnego narzędzia ddos)
Z góry dziękuję!
P.S .: Używam HttpComponents 4.3.1