HttpClient 4 -välityspalvelinvirhe: http-protokollaa ei tueta
Pidä tavallinen HTTP-tehdas mukautetussa Apache HttpClient 4 -rekisterissä, kun HTTPS-reitti yhdistää ensin HTTP-välityspalvelimeen.
Apache HttpClient 4 -sovelluksessa HTTPS-kohde ei tarkoita, että jokainen yhteys alkaa TLS:llä. Tavalliseen HTTP-välityspalvelimeen päästään salaamattomalla yhteydellä ennen kuin CONNECT avaa tunnelin ja TLS kerrostetaan kohti kohdetta.
Jos mukautettu yhteyshallinta rekisteröi vain https:n, ensimmäinen välityspalvelinhyppy voi epäonnistua virheeseen UnsupportedSchemeException: http protocol is not supported.
4.5-rajapinnassa molemmat tehtaat on sisällytettävä, kun kyseinen hallinta rakennetaan:
var registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", tlsFactory)
.build();
var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("proxy.example.net", 8080, "http"))
.build();
tlsFactory on sovelluksen olemassa oleva SSLConnectionSocketFactory, jossa on tarkoitettu luottamuksen ja isäntänimen tarkistus. Näytetyt tyypit kuuluvat Apache 4:n org.apache.http-paketteihin. Katkelma edellyttää Javan paikallisten muuttujien tyyppipäättelyä; vanhempi Java-lähdekoodi voi käyttää eksplisiittisiä tyyppejä.
Liitä korjattu hallinta asiakkaaseen, jota pyynnössä todella käytetään. Sallitulle julkiselle HTTPS-pyynnölle ilman välityspalvelimen todennusta HTTP-välityspalvelinluettelon HTTP-merkintä voi täyttää HttpHostin välityspalvelinosoitteen. Toisen rakentajan määrittäminen ei päivitä jo rakennettua asiakasta.
Tarkista myös rakentajan omistajuus: HttpClientBuilder dokumentoi, että nimenomaisesti annettu yhteyshallinta voi ohittaa sen erilliset SSL-määrityssyötteet. Sijoita tarvittavat tehtaat hallinnan rekisteriin sen sijaan, että olettaisit myöhemmän setSSLContext-kutsun korvaavan sen sisäosat.
Tämä diagnoosi koskee paikallista skeemarekisteriä. Välityspalvelimen todennuspyyntö tai hylätty kohde on myöhempi, erilainen tulos. Säilytä molemmat tehdasrekisteröinnit, kun tutkit näitä vastauksia.