У Јави 11 или новијој поставите ProxySelector на градитељу клијента. Својства проксија за целу JVM тако остају непромењена:

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

Замените документацијску крајњу тачку својим HTTP проксијем; листа HTTP проксија нуди кандидате за тестирање. ProxySelector.of прима адресу сокета: користите хост без префикса http:// и порт задајте засебно. Бира HTTP прокси, а не SOCKS према броју порта. URI захтева остаје стварно одредиште.

HTTPS може пролазити кроз тај HTTP прокси тунелом. Не треба смањивати заштиту одредишта и поставка не значи да сам слушалац проксија подржава TLS.

Временско ограничење везе у градитељу клијента важи при успостављању везе; захтев има сопствено ограничење. Оба нека буду јасна јер захтев може поново искористити постојећу везу. Изузетак мреже, аутентификације или тунела може настати пре било ког одговора одредишта, док враћени статус грешке не мора изазвати изузетак.

Поново користите клијента за захтеве с истом политиком усмеравања како би апликација искористила његово управљање везама.

Повезани чланци