Apache Commons Http-Client - Registrieren eines kundenspezifischen Protokoll
-
26-09-2019 - |
Frage
Ich arbeite an einer Bibliothek, die in anderen Anwendungen integriert werden soll. Ich habe mit einem HTTPS-Server zu kommunizieren, und ich bin mit Apache Commons Httpclient 3.1. Ich habe meine eigenen Schlüsselspeicher und Notwendigkeit, eine Protokoll über: Protocol.registerProtocol
. Ich frage mich, ob es einen Weg war dies für meine bestimmte Instanz des Client registrieren und nicht statisch -. So kann ich Chaos nicht auf alle anderen Instanzen und niemand verwirrt mich auf
Ich sah etwas, wo ich kann den Kunden HostConfiguration und Anruf erhalten setHost , mit einem Protokoll, aber es scheint nicht zu Arbeit richtig. Ich Registrierung es wie:
HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
aber, wenn eine Verbindung herzustellen versucht, schlägt der SSL-Handshake, während es funktioniert, wenn Protocol.registerProtocol mit den gleichen Parametern. Der Fehler ist der Standard:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Lösung
Upgrade auf 4 und Httpcomponents leave Client 3.x allein.