Java 11-ben vagy újabb verzióban állítson be ProxySelector objektumot a kliensépítőn. A teljes JVM proxybeállításai így érintetlenek maradnak:

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

Cserélje a dokumentációs végpontot a saját HTTP-proxyjára; a HTTP-proxylista tesztelhető jelölteket kínál. A ProxySelector.of socketcímet fogad: használja a gépnevet http:// előtag nélkül, és a portot külön adja meg. HTTP-proxyt választ, nem SOCKS-ot a portszám alapján. A kérés URI-ja a valódi cél marad.

A HTTPS ezen a HTTP-proxyn alagúton haladhat át. Nem kell gyengíteni a cél biztonságát, és a beállítás nem jelenti, hogy maga a proxy figyelőpontja TLS-t támogat.

A kliensépítő kapcsolati időkorlátja kapcsolat létesítésekor érvényesül; a kérésnek saját időkorlátja van. Mindkettő legyen látható, mert a kérés meglévő kapcsolatot is újrahasználhat. Hálózati, hitelesítési vagy alagútkivétel bármilyen célválasz előtt bekövetkezhet, míg a visszaadott hibastátusz nem feltétlenül okoz kivételt.

Azonos útválasztási házirendű kérésekhez használja újra a klienst, hogy az alkalmazás kihasználhassa annak kapcsolatkezelését.

Kapcsolódó cikkek