如何解决使用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
有任何想法吗?
解决方法
这是来自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(对于Mac OS X和Windows为http://www.proxifier.com/)或CNTLM之类的工具(http://cntlm.sourceforge.net/)更加容易,灵活,易于调试,并且保持代码干净。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。