In een Apache HttpClient 4-toepassing betekent een HTTPS-bestemming niet dat elke verbinding met TLS begint. Een gewone HTTP-proxy wordt bereikt via een onversleutelde verbinding voordat CONNECT de tunnel opent en TLS richting de bestemming wordt gelaagd.

Als een aangepaste verbindingsmanager alleen https registreert, kan de eerste proxysprong mislukken met UnsupportedSchemeException: http protocol is not supported.

Voor de 4.5-API moeten beide fabrieken worden opgenomen wanneer die manager wordt gebouwd:

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 is de bestaande SSLConnectionSocketFactory van de toepassing, met de bedoelde vertrouwens- en hostnaamcontrole. De getoonde typen behoren tot de org.apache.http-pakketten van Apache 4. Het fragment veronderstelt Java's lokale variabeletype-inferentie; oudere Java-broncode kan expliciete typen gebruiken.

Koppel de gecorrigeerde manager aan de client die daadwerkelijk voor het verzoek wordt gebruikt. Voor een toegestaan openbaar HTTPS-verzoek zonder proxyauthenticatie kan een HTTP-vermelding uit de HTTP-proxylijst het proxyadres van HttpHost vullen. Een andere builder configureren werkt een al gebouwde client niet bij.

Onderzoek ook het eigenaarschap van de builder: HttpClientBuilder documenteert dat een expliciet geleverde verbindingsmanager de afzonderlijke SSL-configuratie-invoer kan overschrijven. Plaats de benodigde fabrieken in het register van de manager in plaats van aan te nemen dat een latere setSSLContext-aanroep het inwendige vervangt.

Deze diagnose betreft het lokale schemaregister. Een proxyauthenticatie-uitdaging of een geweigerde bestemming is een later, ander resultaat. Behoud beide fabrieksregistraties terwijl u die reacties onderzoekt.

Gerelateerde artikelen