如何为apache HttpClient设置全局http代理设置

时间:2017-01-23 16:04:23

标签: java apache-httpclient-4.x jolokia

在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实例进行配置。 但是,这不允许您访问API代码中内置的HttpRequest

例如,在Jolokia(一个JMX REST桥)中,您可以像这样创建客户端:

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia", httpClient);

在这种情况下,有没有办法指定HTTP代理? http.proxyHost系统属性似乎被忽略了,我想避免在HttpClientHttpRequest周围创建完整的包装类层,以便在请求创建期间注入设置。

1 个答案:

答案 0 :(得分:5)

您可以使用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