Java 11:ssä ja uudemmissa määritä ProxySelector asiakasrakentajaan. Koko JVM:n välityspalvelinominaisuudet pysyvät näin ennallaan:

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class ProxyExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .proxy(ProxySelector.of(
                new InetSocketAddress("203.0.113.10", 8080)))
            .connectTimeout(Duration.ofSeconds(5))
            .build();

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/"))
            .timeout(Duration.ofSeconds(15))
            .GET()
            .build();

        HttpResponse<String> response = client.send(
            request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

Korvaa dokumentaation päätepiste omalla HTTP-välityspalvelimellasi; HTTP-välityspalvelinluettelo tarjoaa testattavia ehdokkaita. ProxySelector.of ottaa sokettiosoitteen: käytä isäntää ilman http://-etuliitettä ja anna portti erikseen. Se valitsee HTTP-välityspalvelimen, ei SOCKSia porttinumeron perusteella. Pyynnön URI pysyy todellisena kohteena.

HTTPS voi kulkea tämän HTTP-välityspalvelimen kautta tunnelissa. Kohteen suojausta ei tarvitse heikentää, eikä määritys tarkoita, että välityspalvelimen kuuntelija itse tukisi TLS:ää.

Asiakasrakentajan yhteysaikakatkaisu koskee yhteyden muodostamista; pyynnöllä on oma aikakatkaisunsa. Pidä molemmat näkyvissä, sillä pyyntö voi käyttää olemassa olevaa yhteyttä uudelleen. Verkko-, tunnistautumis- tai tunnelipoikkeus voi tulla ennen kohteen vastausta, kun taas palautettu virhetila ei välttämättä aiheuta poikkeusta.

Käytä asiakasta uudelleen saman reitityskäytännön pyynnöille, jotta sovellus hyötyy sen yhteyksien hallinnasta.

Aiheeseen liittyvät artikkelit