繁体   English   中英

HttpClient的代理身份验证问题

[英]Proxy authentication problem with HttpClient

我有一个胖客户端应用程序,该应用程序连接到Internet上的服务器以进行文件传输和上传。

但是,通过代理访问Internet。 我在胖客户端上使用HttpClient,在服务器端使用Apache Commons文件上传。

我在HttpClient上设置代理,如下所示:

HttpClient client = new  HttpClient(); 
HostConfiguration config = client.getHostConfiguration(); 
config.setProxy(PROXY_HOST, PROXY_PORT); 

PostMethod filePost = new PostMethod(servletPath); 
int status = client.executeMethod(config , filePost); 

但是,我不是使用硬编码PROXY_HOST的值(上面的PROXY_PORT),而是使用HttpUrlConnection来获取代理信息并将其设置为这些值。 这很好。

如果我没有这样设置代理服务器设置,则HttpClient将忽略我的代理服务器设置,并且不会自动检测到它们,因此我的应用程序无法连接到Internet上的服务器。

现在,当我使用HttpClient连接到服务器时,请求通过代理进行,但由于期望提供的代理信息具有用户身份验证凭据而失败。 我无法找到一种方法来完成这项工作,因为我希望用户一旦连接到代理而不是完全失败之后,就会弹出一个窗口输入用户ID和密码。

有人可以建议如何使HttpClient与代理一起使用而无需对PROXY_HOST,PROXY_PORT值进行硬编码。

同样,该应用程序将从胖客户端针对不同用户启动。 因此,应该从浏览器设置中自动检测代理信息(这就是HttpUrlConnection对我所做的事情)。

有人可以为这种情况建议解决方案吗?

对于代理和端口,我建议像这样在java命令行上使用System属性:

java -Dhttp.proxyHost=myproxyserver.com -Dhttp.proxyPort=80 MyMainClass

将通过GUI从用户询问用户和密码,然后使用System.getProperties()。put(String,String)方法进行设置。 参数为:

  • http.proxyUser
  • http.proxyPassword

完整文档可在此处获得 与您的确切问题有关的文章可以在这里找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM