Domanda

Sto lavorando su una libreria che è destinato a essere integrato in altre applicazioni. Devo comunicare con un server HTTPS, e sto usando Apache Commons HttpClient 3.1. Ho il mio chiavi e hanno bisogno di registrare un protocollo via: Protocol.registerProtocol. Mi chiedevo se ci fosse un modo per registrare questo per la mia istanza specifica del cliente piuttosto che staticamente -. In questo modo non mi rovinare tutti gli altri casi e nessuno pasticci me up

ho visto qualcosa dove posso trovare il client HostConfiguration e call setHost , con un protocollo, ma non sembra funzionare propriamente. Sto registrandolo come:

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

, ma quando si cerca di effettuare una connessione, l'handshake SSL fallisce, mentre funziona quando si utilizzano Protocol.registerProtocol con gli stessi parametri. Il fallimento è lo standard:

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

È stato utile?

Soluzione

Aggiornamento a HttpComponents 4 3.x client lasciano in pace.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top