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

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

private final HttpClient httpClient; // Spring injected

Настройка Basic auth:

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/) было намного проще, гибче, проще отлаживать, и сохранил код в чистоте.