Eu estou usando HttpClient para se conectar a um host que requer BasicAUTH. Mas o proxy não requer autenticação. Eu configurei da seguinte forma:
private final HttpClient httpClient; // Spring injected
Definindo a autenticação básica:
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); }
Definindo o proxy:
private void setProxy(final String proxyHost, final int proxyPort) { hostConfiguration hostConfiguration = httpClient.getHostConfiguration(); hostConfiguration.setProxy(proxyHost, proxyPort); }
Mas recebo os seguintes avisos ao executar o código. Tudo funciona, mas eu quero me livrar dos avisos também (ou pelo menos entender por que eles aparecem)
WARN oachttpclient.HttpMethodDirector - Required proxy credentials not available for BASIC @proxy.XXXXXX.no:3128 WARN oachttpclient.HttpMethodDirector - Preemptive authentication requested but no default proxy credentials available
Alguma ideia?
Aqui está um exemplo do site do Apache para um proxy sem credenciais:
(De http://hc.apache.org/httpcomponents-client-ga/examples.html )
Você está recebendo o erro porque está passando um nome de usuário / senha e não precisa.
As mensagens WARN são provenientes do logger (http://hc.apache.org/httpcomponents-client-ga/logging.html) – dependendo de como você tem seu logger configurado, você pode simplesmente ignorar isso.
Tendo gasto muito tempo lidando com a tentativa de fazer com que um aplicativo Java lide com servidores proxy, posso dizer que você usa uma ferramenta como o Proxifier ( http://www.proxifier.com/ para Mac OS X e Windows) ou o CNTLM ( http://cntlm.sourceforge.net/ ) era muito mais fácil, mais flexível, mais fácil de depurar e mantinha o código limpo.