Apache Commons HTTP-клиент - регистрация конкретного протокола клиента
-
26-09-2019 - |
Вопрос
Я работаю над библиотекой, которая предназначена для интеграции в другие приложения. Я должен связаться с 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 в одиночку.