Apache HTTP de cliente Commons - Registro de un protocolo específico del cliente
-
26-09-2019 - |
Pregunta
Estoy trabajando en una biblioteca que está destinado a ser integrado en otras aplicaciones. Tengo que comunicarse con un servidor https, y estoy usando Apache Commons HttpClient 3.1. Tengo mi propio almacén de claves y necesidad de registrar un Protocolo a través de: Protocol.registerProtocol
. Me preguntaba si había una manera de registrar esto para mi instancia específica del cliente en lugar de estática -. De esta manera yo no estropear cualquier otra instancia y nadie me recoger el desorden
vi algo donde puedo conseguir el HostConfiguration clientes y llamada setHost , con un protocolo, pero no parece que el trabajo correctamente. Estoy registrarlo como:
HostConfiguration config = client.getHostConfiguration();
config.setHost(remoteUrl.getHost(), remoteUrl.getPort(), new Protocol("https", new MyProtocolSocketFactory(), 443));
pero al intentar hacer una conexión, el protocolo de enlace SSL falla, mientras funciona cuando se utiliza Protocol.registerProtocol con los mismos parámetros. El fracaso es el estándar:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Solución
Actualizar a HttpComponents 4 y 3.x cliente dejara en paz.