Apache Commons Http client - Enregistrement d'un protocole spécifique client
-
26-09-2019 - |
Question
Je travaille sur une bibliothèque qui est destiné à être intégré dans d'autres applications. Je dois communiquer avec un serveur https, et j'utilise apache communes HttpClient 3.1. J'ai mon propre et keystore besoin d'enregistrer un Protocole via: Protocol.registerProtocol
. Je me demandais s'il y avait un moyen de vous inscrire pour mon exemple spécifique du client plutôt que statiquement -. Ainsi, je ne suis pas gâcher tout autre cas, et personne ne me bousille
J'ai vu quelque chose où je peux obtenir les clients et HostConfiguration appel setHost , avec un protocole, mais il ne semble pas au travail correctement. Je me inscris comme:
HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
mais en essayant d'établir une connexion, la poignée de main SSL échoue, alors qu'il fonctionne lorsque vous utilisez Protocol.registerProtocol avec les mêmes paramètres. L'échec est la norme:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
La solution
Mise à niveau HttpComponents 4 et le congé 3.x client seul.