问题描述
我正在使用 HttpClient 连接到需要 BasicAUTH 的主机.但是代理不需要任何身份验证.我是这样设置的:
I am using HttpClient to connect to a host which requires BasicAUTH. But the proxy doesn't require any authentication. I have set it up as follows:
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);
}
但是我在运行代码时收到以下警告.一切正常,但我也想摆脱警告(或至少了解它们出现的原因)
But I get the following warnings when running the code. Everything works, but I want to get rid of the warnings as well (or at least understand why they appears)
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
有什么想法吗?
推荐答案
以下是来自 Apache 站点的无凭据代理示例:
Here's an example from the Apache site for a proxy w/o credentials:
(来自 http://hc.apache.org/httpcomponents-client-ga/examples.html)
您收到错误是因为您传入的是用户名/密码,但不需要.
You are getting the error because you are passing in a username/password and don't need to.
警告消息来自记录器 (http://hc.apache.org/httpcomponents-client-ga/logging.html) - 取决于您如何设置记录器,可以 忽略它.
The WARN messages are coming from the logger (http://hc.apache.org/httpcomponents-client-ga/logging.html) - depending on how you have your logger set up you could just ignore that.
在尝试使 Java 应用程序与代理服务器打交道上花费了太多时间,我可以告诉您,使用诸如 Proxifier ( http://www.proxifier.com/(适用于 Mac OS X 和 Windows)或 CNTLM(http://cntlm.sourceforge.net/) 更容易、更灵活、更容易调试,并保持代码干净.
Having spent WAY too much time dealing with trying to make a Java application deal with proxy servers, I can tell you that using a tool such as Proxifier ( http://www.proxifier.com/ for Mac OS X and Windows) or CNTLM ( http://cntlm.sourceforge.net/) was much easier, more flexible, easier to debug, and kept the code clean.
这篇关于使用 HttpProxy 通过抢先式身份验证连接到主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!