gpt4 book ai didi

java - 池化 HttpClientConnectionManager : How to do Https requests?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:17 27 4
gpt4 key购买 nike

我目前正在尝试使用 CloseableHttpClient 同时执行多个 HttpGet 请求。
我用谷歌搜索了如何做到这一点,答案是使用 PoolingHttpClientConnectionManager

此时我得到了这个:

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

然后我尝试向 http://www.google.com 发出 HttpGet 请求,一切正常。

然后我通过 cmd 创建了一个信任库并导入了目标网站的证书,用我的信任库设置了一个 SSLConnectionSocketFactory 并设置了 httpClient SSLSocketFactory:

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 路径构建失败 异常。
如果我在没有 .setConnectionManager(cManager) 的情况下执行相同操作,一切正常。

你们中的任何人都可以告诉我如何让它工作吗? (别担心,我没有创建任何 ddos​​ 工具)

提前致谢!

附注:我使用的是 HttpComponents 4.3.1

最佳答案

找到答案: https://stackoverflow.com/a/19950935/1223253

只需要添加

Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create().register("https", sslsf).build();

并将socketFactoryRegistry 作为参数传递给PoolingHttpClientConnectionManager 的构造函数。现在它工作得很好:)

关于java - 池化 HttpClientConnectionManager : How to do Https requests?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20511020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com