HttpURLConnection надає usingProxy, але результату потрібні поруч реалізація та стан з'єднання. Це не тестовий запит.

В HTTP-обробнику OpenJDK 25 явно налаштований HTTP-проксі може змусити метод повернути true ще до відкриття мережевого з'єднання:

import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;

var proxy = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
var url = URI.create("http://example.com/").toURL();
var connection = (HttpURLConnection) url.openConnection(proxy);
boolean proxyFlag = connection.usingProxy();

Кандидат HTTP зі списку HTTP-проксі може заповнити хост і порт для дозволеного публічного запиту без автентифікації проксі. openConnection створює об'єкт. Він не встановлює HTTP-з'єднання самим лише поверненням цього об'єкта. Тому прапорець у цьому випадку явного проксі не доводить, що посередник доступний або приймає запит.

За автоматичного вибору вибір маршруту може статися пізніше, коли обробник підключається. Ранній результат false не слід вважати остаточним рішенням про маршрут. Після підключення тлумачте стан разом з будь-яким винятком або відповіддю, особливо коли брали участь автентифікація чи резервний шлях.

Публічний метод належить HttpURLConnection, а описана поведінка специфічна для названого обробника OpenJDK. Інший постачальник або реалізація JDK не зобов'язані показувати ті самі деталі до підключення.

Запишіть, як було вибрано проксі та коли прочитано прапорець. Щоб установити адресу джерела, яку бачить призначення, зберігайте докази з боку призначення; у логічного маркера проксі немає поля для цієї адреси виходу.

Схожі статті