java - Apache Commons Http 客户端 - 注册客户端特定协议(protocol)

标签 java ssl apache-commons-httpclient

我正在开发一个旨在集成到其他应用程序中的库。我必须与 https 服务器通信,并且我使用的是 apache commons HttpClient 3.1。我有自己的 keystore ,需要注册 Protocol通过:Protocol.registerProtocol。我想知道是否有一种方法可以为我的特定客户端实例而不是静态地注册它 - 这样我就不会弄乱任何其他实例,也没有人会弄乱我。

我看到了一些可以获取客户端 HostConfiguration 并调用 setHost 的东西,带有协议(protocol),但似乎无法正常工作。我正在注册它:

HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));

但是在尝试建立连接时,SSL 握手失败,而在使用具有相同参数的 Protocol.registerProtocol 时它有效。失败是标准:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径

最佳答案

升级到 HttpComponents 4 并保留客户端 3.x。

关于java - Apache Commons Http 客户端 - 注册客户端特定协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822125/

相关文章:

java - 我应该使用哪种 Arquillian 配置?

java - 为什么当我开始一项新 Activity 时我的背景消失了?

java - 如何使用 selenium webdriver 在网页上获取 ajax 添加的内容?

php - 如果在 url 中使用 https,动态网页内容不会出现

java - 如何从 pem 文件加载公共(public)证书?

java - 使用 Java HttpClient 发送带有 443 用户 ID 密码提示身份验证的 GET 请求

java - DoubleFunction 的 Lambda

java - SSLv2Hello - javax.net.ssl.SSLException : Received fatal alert: unexpected_message

java - 使用 AXIS2 1.4 进行 NTLM v.2 身份验证

java - 对在 HttpClient 中创建 cookie 的不同方法感到困惑