В Fluent API Apache HttpClient 5 объект Request может выбрать прокси, а Executor предоставляет его учётную запись. Выполните запрос через этот объект с учётными данными:

HttpHost proxy = new HttpHost("http", "proxy.example", 8080);
Executor executor = Executor.newInstance()
    .auth(proxy, proxyUser, proxyPassword.toCharArray());

String body = executor.execute(
        Request.get("https://www.example.com/").viaProxy(proxy))
    .returnContent()
    .asString();

Executor и Request берутся из org.apache.hc.client5.http.fluent; HttpHost — из org.apache.hc.core5.http. Переменные учётной записи берутся из конфигурации приложения.

Оба использования прокси намеренно описывают один и тот же хост и порт. viaProxy выбирает маршрут, а auth регистрирует учётные данные для этого посредника в Executor. Если итоговый результат по-прежнему 407, сравните выбранный маршрут с областью действия учётных данных.

Вызов удобного метода execute отдельного Request использовал бы другой путь выполнения. Держите Executor с учётными данными привязанным к операции, как в примере, чтобы клиент, получающий запрос, имел настроенную учётную запись.

Пример использует интерфейс пароля char-array из 5.x. Старые фрагменты HttpClient 4 Fluent используют другие пакеты и сигнатуры методов. После завершения запроса returnContent поглощает тело ответа и освобождает соединение для повторного использования.

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