PoolingHttpClientConnectionManager:如何做Https请求?

 BIGBANG-YG-BEAR 发布于 2023-02-11 16:16

我正在尝试同时做多个HttpGet请求CloseableHttpClient.
我搜索了如何做到这一点,答案是使用一个PoolingHttpClientConnectionManager.

此时我得到了这个:

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

然后我尝试了一个HttpGet请求http://www.google.com,一切正常.

然后,我通过创建一个CMD信任和进口目标网站的证书,设置一个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,HttpGet那么我会得到一个PKIX path building failed例外.
如果我做同样的.setConnectionManager(cManager)事情,一切正常.

谁能告诉我如何让这个工作?(别担心,我不创建任何ddos工具)

提前致谢!

PS:我正在使用HttpComponents 4.3.1

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有