我有一个胖客户端应用程序,它连接到互联网上的服务器进行文件传输和上传。
但是,通过代理访问互联网。我在胖客户端上使用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会忽略我的代理设置而不会自动检测它们,因此我的应用程序无法连接到互联网上的服务器。
现在,当我使用HttpClient连接到服务器时,请求通过代理进行,但失败,因为它需要提供代理信息的用户身份验证凭据。我无法找到一种方法如何使这项工作正如我期望用户输入用户ID和密码一样,一旦连接到代理而不是请求完全失败。
有人可以建议如何在不对PROXY_HOST,PROXY_PORT值进行硬编码的情况下使HttpClient与代理一起工作。
此外,此应用程序将从胖客户端为不同用户启动。因此,应该从浏览器设置中自动检测代理信息(这是HttpUrlConnection为我做的事情)。
有人可以为这种情况建议一个解决方案吗?