Ab Java 11 setzen Sie einen ProxySelector am Client-Builder. Die Proxy-Eigenschaften für die gesamte JVM bleiben dabei unangetastet:

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());
    }
}

Ersetzen Sie den Dokumentationsendpunkt durch Ihren HTTP-Proxy; die HTTP-Proxy-Liste liefert Testkandidaten. ProxySelector.of erwartet eine Socket-Adresse: verwenden Sie den Host ohne http://-Präfix und geben Sie den Port separat an. Es wird ein HTTP-Proxy ausgewählt, nicht anhand der Portnummer SOCKS. Die Anfrage-URI bleibt das tatsächliche Ziel.

HTTPS kann diesen HTTP-Proxy über einen Tunnel passieren. Das Ziel muss nicht herabgestuft werden, und die Einrichtung bedeutet nicht, dass der Proxy-Listener selbst TLS unterstützt.

Der Verbindungs-Timeout des Client-Builders gilt beim Verbindungsaufbau; die Anfrage hat ihren eigenen Timeout. Halten Sie beide sichtbar, da eine Anfrage eine bestehende Verbindung wiederverwenden kann. Eine Netzwerk-, Authentifizierungs- oder Tunnel-Ausnahme kann vor jeder Zielantwort auftreten, während ein zurückgegebener Fehlerstatus nicht zwingend eine Ausnahme auslöst.

Verwenden Sie den Client für Anfragen mit derselben Routing-Richtlinie wieder, damit die Anwendung von seiner Verbindungsverwaltung profitiert.

Ähnliche Artikel