我发现设置http.proxyHost和http.proxyPort对httpClient没有用处。如何在不更改代码的情况下通过环境变量或VM参数或类似的内容强制httpClient使用代理?
发布于 2012-11-27 21:06:47
发布于 2016-04-19 17:37:24
HTTP客户端(我的例子是4.5.1版本)可以像这样使用系统代理:
HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
//or
HttpClient httpClient = HttpClients.createSystem();
发布于 2011-03-02 17:25:56
您可以使用client.getHostConfiguration().setProxy(host, port)
方法强制proxy自行执行HttpClient
。我通常在HttpClient
周围创建包装器类,当初始化这个类时,我从任何来源(env.变量...)。
我在不能直接在HttpClient
上设置代理的情况下使用了java.net.ProxySelector.setDefault(new MyProxySelector())
。您必须实现自己的ProxySelector类,并且方法select根据请求的URI进行代理选择。您可以进行url->代理映射,以将特定的URI地址配置为所需的代理,或者为所有请求的URI全局返回一个代理。
正如我在HttpClient源代码中看到的,没有其他方法可以配置只使用代理的setProxy方法。我使用commons-httpclient-3.1。
https://stackoverflow.com/questions/5165126
复制相似问题