Apache Commons Http Client - Регистрация клиентского протокола - PullRequest
0 голосов
/ 29 сентября 2010

Я работаю над библиотекой, которая предназначена для интеграции в другие приложения. Я должен общаться с сервером https, и я использую Apache Commons HttpClient 3.1. У меня есть собственное хранилище ключей, и мне необходимо зарегистрировать протокол через: Protocol.registerProtocol. Мне было интересно, есть ли способ зарегистрировать это для моего конкретного экземпляра клиента, а не статически - таким образом, я не путаю другие экземпляры, и никто меня не портит.

Я видел кое-что, где я могу получить клиенты HostConfiguration и вызвать setHost с протоколом, но он не работает должным образом. Я регистрирую это как:

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: unable to find valid certification path to requested target

1 Ответ

0 голосов
/ 10 октября 2010

Обновите до HttpComponents 4 и оставьте клиента 3.x в покое.

...