当前位置: 首页 > 面试题库 >

PoolingHttpClientConnectionManager:如何执行Https请求?

韩弘方
2023-03-14
问题内容

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

至此,我得到了:

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

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

然后,我通过cmd创建了一个信任库,并导入了目标网站的证书,SSLConnectionSocketFactory使用我的信任库设置并设置的SSLSocketFactoryof
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();

如果我尝试执行Https,HttpGet则会出现PKIX path building failed异常。
如果我做同样的事情,但.setConnectionManager(cManager)一切正常。

谁能告诉我如何使它起作用?(不用担心,我不会创建任何ddos工具)

提前致谢!

PS:我正在使用HttpComponents 4.3.1


问题答案:

找到了答案:http://codingdict.com/questions/136416

只需添加

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

socketFactoryRegistry作为参数传递给的构造函数PoolingHttpClientConnectionManager。现在可以正常工作了:)



 类似资料:
  • 我可以在不设置代理的情况下执行http或https客户端请求, 这个脚本工作正常,当我请求https url时,我得到一个200 ok,但是如果我设置了代理,脚本: 我总是收到“坏请求”,我看文件:https://golang.org/pkg/net/http/: ...........从Go1.6开始,http包在使用HTTPS时对http/2协议有透明的支持。必须禁用HTTP/2的程序可以通过

  • 说我想得到以编程方式。目前是戈朗。org(ssl)有一个颁发给所以当我运行此命令时: 我得到了(如我所料) 现在,我想自己信任这个证书(想象一个自我颁发的证书,我可以验证指纹等):我如何发出请求并验证/信任证书? 我可能需要使用openssl下载证书,将其加载到我的文件中,并填写结构!?

  • 问题内容: 说我想以编程方式获取。目前,golang.org(ssl)的证书不正确,因此我将其签发给So: 我得到了(如我所料) 现在,我想自己信任该证书(想象一个可以颁发指纹的自我发行的证书,等等):如何提出请求并验证/信任该证书? 我可能需要使用openssl下载证书,将其加载到我的文件中并填充struct!?。 问题答案: 安全说明:禁用安全检查是危险的,应避免 您可以全局禁用默认客户端的所

  • 问题内容: 浏览器不允许跨站点AJAX调用(这是安全限制)。有没有可能的解决方案? 编辑 我只控制来电者的网站 问题答案: 如果您控制双方,那么会有很多选择。例如JSONP,或修改远程网站的标头响应。 不幸的是 ,只有在远程网站支持的情况下,JSONP才有效。您 不能 将JSONP调用强制到尚不支持它的网站。 但是,正如您所说,您只能控制源网站。出于明显的原因,您无法绕过此限制来入侵浏览器。您确实

  • Spring留档声明,即使要执行同步超文本传输协议调用,我们也必须从RestTemboard切换到。 目前,我有以下代码: 当然,我可以在这里使用CountdownLatch,但它看起来像是API滥用。 如何执行同步请求?