PoolingHttpClientConnectionManager: Comment faire des requêtes Https?

Je suis en train d'essayer de faire plusieurs HttpGet demandes en même temps avec CloseableHttpClient.
J'ai googlé sur la façon de faire et la réponse a été d'utiliser un PoolingHttpClientConnectionManager.

À ce point, j'ai obtenu ceci:

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

Ensuite, j'ai essayé un HttpGet demande à http://www.google.com et tout a bien fonctionné.

Puis j'ai créé un truststore via cmd et importé le certificat du site web ciblé, l'installation d'un SSLConnectionSocketFactory avec mon truststore et définir la SSLSocketFactory de 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();

Si j'essaie d'exécuter un Https HttpGet puis-je obtenir un PKIX path building failed exception.
Si je fais la même chose sans .setConnectionManager(cManager) tout fonctionne bien.

Peut quelqu'un d'entre vous me dire comment je peux obtenir que cela fonctionne? (Ne vous inquiétez pas, je n'ai pas créer n'importe quel outil de ddos)

Merci d'avance!

P. S.: je suis en utilisant HttpComponents 4.3.1

OriginalL'auteur TorbenJ | 2013-12-11