我使用apache commons 3.1来实现http代理支持。 我正尝试通过代理连接到远程主机。代理服务器配置没有任何身份验证,但是远程主机配置了身份验证。 当我将这个代理通过参数属性文件,它给了警告,同时执行:Apache客户端中的httpClient代理支持3.1
WARN - 抢先进行身份验证请求,但没有默认代理凭据 - 不适用于Basic @ XX.XX.XX.XX WARN需要代理证书availble
但是执行继续。
另一方面,当我通过JVM参数传递代理参数时,再次发出相同的警告并停止执行。
这种行为是否有任何特定的原因?在通过属性文件和JVM参数传递代理参数方面是否有区别?
下面是代码:
if(System.getProperty("http.proxyHost") != null && System.getProperty("http.proxyPort") != null) {
httpClient.getHostConfiguration().setProxy(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort")));
}
else if(AMXAdminTask.props.getProperty("http.proxyHost") != null && AMXAdminTask.props.getProperty("http.proxyPort") != null) {
httpClient.getHostConfiguration().setProxy(Propfile.props.getProperty("http.proxyHost"), Integer.parseInt(Propfile.props.getProperty("http.proxyPort")));
}
我能够用相同的代码小提琴手测试代理服务器。我可以从属性文件和JVM ags传递代理参数。 – user1173339
现在我遇到了有关代理服务器身份验证的问题。我使用小提琴作为代理服务器。我在代理服务器和远程主机都有身份验证。我在httpClient头中设置了http代理凭证。但是我在响应中出现错误:“传输错误407:需要代理身份验证。”并在提琴手中看到一条消息:“没有WWW-验证标题存在。” – user1173339
您需要为您的代理用户和密码设置系统属性: 'System.setProperty(“http.proxyUser”,authUser);' 'System.setProperty(“http.proxyPassword”,authPassword);' –