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