Использование HttpProxy для подключения к хосту с предварительной проверкой подлинности

Я использую HttpClient для подключения к хосту, который требует BasicAUTH. Но прокси не требует никакой аутентификации. Я настроил это следующим образом:

private final HttpClient httpClient; // Spring injected

Настройка базовой аутентификации:

private void setBasicAuth(final String username, final String password) {
    httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM), new UsernamePasswordCredentials(username, password));
    httpClient.getParams().setAuthenticationPreemptive(true);
}

Настройка прокси:

private void setProxy(final String proxyHost, final int proxyPort) {
    hostConfiguration hostConfiguration = httpClient.getHostConfiguration();
    hostConfiguration.setProxy(proxyHost, proxyPort);
}

Но я получаю следующие предупреждения при запуске кода. Все работает, но я хочу избавиться и от предупреждений (или хотя бы понять, почему они появляются)

WARN  o.a.c.httpclient.HttpMethodDirector - Required proxy credentials not available for BASIC <any realm>@proxy.XXXXXX.no:3128
WARN  o.a.c.httpclient.HttpMethodDirector - Preemptive authentication requested but no default proxy credentials available

Есть идеи?

1 ответ

Вот пример с сайта Apache для прокси без учетных данных:

http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientExecuteProxy.java

(Из http://hc.apache.org/httpcomponents-client-ga/examples.html)

Вы получаете сообщение об ошибке, потому что вы вводите имя пользователя / пароль и вам это не нужно.

Сообщения WARN поступают от регистратора (http://hc.apache.org/httpcomponents-client-ga/logging.html) - в зависимости от того, как настроен ваш регистратор, вы можете просто проигнорировать это.

Потратив слишком много времени на попытки заставить приложение Java работать с прокси-серверами, я могу вам сказать, что с помощью такого инструмента, как Proxifier ( http://www.proxifier.com/ для Mac OS X и Windows) или CNTLM ( http://cntlm.sourceforge.net/) было намного проще, гибче, проще в отладке и содержал код в чистоте.

Другие вопросы по тегам