Java Apache Commons Http客户端-注册特定于客户端的协议

Java Apache Commons Http客户端-注册特定于客户端的协议,java,ssl,apache-commons-httpclient,Java,Ssl,Apache Commons Httpclient,我正在开发一个可以集成到其他应用程序中的库。我必须与https服务器通信,我使用的是ApacheCommonsHttpClient 3.1。我有自己的密钥库,需要注册via:协议。registerProtocol。我想知道是否有一种方法可以为我的客户机的特定实例而不是静态地注册它-这样我就不会弄乱任何其他实例,也没有人会弄乱我 我看到了一些可以通过协议获得客户端主机配置和调用的东西,但它似乎无法正常工作。我的注册方式如下: HostConfiguration config = client.ge

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

我看到了一些可以通过协议获得客户端主机配置和调用的东西,但它似乎无法正常工作。我的注册方式如下:

HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
但在尝试建立连接时,SSL握手失败,而在使用具有相同参数的Protocol.registerProtocol时,SSL握手有效。失败是标准:


原因:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效认证路径

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

可能存在重复的