Usando HttpProxy para se conectar a um host com autenticação preemtive

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:

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

(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.