Apache Commons HTTP-клиент - регистрация конкретного протокола клиента

StackOverflow https://stackoverflow.com/questions/3822125

Вопрос

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

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

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

Но при попытке сделать соединение, рукопожатие SSL не удается, пока он работает при использовании протокола. РегистрацияProtocol с одинаковыми параметрами. Сбой является стандартом:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Это было полезно?

Решение

Обновите до httpComponents 4 и оставьте клиента 3.x в одиночку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top