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 не обязаны показывать те же детали до подключения.

Запишите, как был выбран прокси и когда был прочитан флаг. Чтобы установить адрес источника, который видит назначение, сохраняйте доказательства со стороны назначения; у логического признака прокси нет поля для этого адреса выхода.

Похожие статьи