gpt4 book ai didi

java - HttpClient 的代理身份验证问题

转载 作者:行者123 更新时间:2023-11-30 11:54:27 25 4
gpt4 key购买 nike

我有一个胖客户端应用程序,它连接到 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);

但是,我使用 HttpUrlConnection 来获取代理信息并设置到这些值中,而不是上面对 PROXY_HOST、PROXY_PORT 的硬编码值。这很好用。

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

现在,当我使用 HttpClient 连接到服务器时,请求通过代理传递但失败,因为它需要用户身份验证凭证来提供所提供的代理信息。我无法想出如何使它工作的方法,因为我希望用户在连接到代理而不是请求完全失败后输入用户 ID 和密码的弹出窗口。

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

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

有人可以针对这种情况提出解决方案吗?

最佳答案

对于代理和端口,我建议在 java 命令行上使用系统属性,如下所示:

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

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

  • http.proxyUser
  • http.proxy密码

完整文档可用here .可以找到与您的确切问题相关的文章 here .

关于java - HttpClient 的代理身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com