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
Vous devez vous connecter pour publier un commentaire.
Trouvé la réponse:
https://stackoverflow.com/a/19950935/1223253
Juste eu à ajouter
et passer
socketFactoryRegistry
comme paramètre au constructeur dePoolingHttpClientConnectionManager
.Maintenant, il fonctionne très bien 🙂
allumez d'enregistrement de client de vérifier les contrats de location de pool de connexion: hc.apache.org/httpcomponents-client-ga/logging.html
super, j'ai passé 2 jours sur ce, et avec votre aide, il a obtenu résolu en 5 minutes. Je souhaite, si je pouvais je l'ai vu plus tôt.. je Vous Remercie.
OriginalL'auteur TorbenJ