在Apache Commons 4.3及更高版本中,您需要在HttpRequest
级别注入HTTP代理设置- 但不是全局注入HttpClient
:
RequestConfig config = RequestConfig.custom().setProxy(proxy).build(); HttpGet httpget = new HttpGet("http://url"); httpget.setConfig(config); ... httpclient.execute(target, httpget);
问题是,在一些更高级别的库中,通过传递自定义构建的HttpClient
实例来进行配置.但这并不能让您访问HttpRequest
API代码内置的内容.
例如,在Jolokia(JMX REST桥)中,您可以像这样创建客户端:
J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia", httpClient);
在这种情况下,有没有办法指定HTTP代理?该http.proxyHost
系统属性似乎忽略了,我想,以避免围绕创建包装类的全层HttpClient
,并HttpRequest
请求创建过程中注入的设置.
您可以使用HttpClientBuilder.它将引入http.proxyHost,http.proxyPort,http.nonProxyHosts的系统属性.
HttpClientBuilder.create().useSystemProperties().build();
请参阅http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html