13

HttpGet現在、同時に複数のリクエストを実行しようとしていますCloseableHttpClient
その方法をグーグルで調べたところ、答えはPoolingHttpClientConnectionManager.

この時点で私はこれを得ました:

PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.custom()
    .setConnectionManager(cManager)
    .build();

HttpGetそれから私はリクエストを試みましたがhttp://www.google.com、すべてうまくいきました。

次に、cmd を使用してトラストストアを作成し、対象の Web サイトの証明書をインポートSSLConnectionSocketFactoryし、トラストストアをセットアップしてSSLSocketFactoryhttpClient次のように設定しました。

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 を実行しようとするとHttpGetPKIX path building failed例外が発生します。
私が同じことをせずに行うと、.setConnectionManager(cManager)すべてうまくいきます。

どうすればこれを機能させることができるか教えてもらえますか?(心配しないでください。私は ddos​​ ツールを作成していません)

前もって感謝します!

PS: HttpComponents 4.3.1 を使用しています

4

1 に答える 1