首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在不更改代码的情况下,如何通过环境变量或JVM参数强制httpClient使用代理

在不更改代码的情况下,如何通过环境变量或JVM参数强制httpClient使用代理
EN

Stack Overflow用户
提问于 2011-03-02 16:37:16
回答 5查看 36.6K关注 0票数 37

我发现设置http.proxyHost和http.proxyPort对httpClient没有用处。如何在不更改代码的情况下通过环境变量或VM参数或类似的内容强制httpClient使用代理?

EN

回答 5

Stack Overflow用户

发布于 2012-11-27 21:06:47

Stack Overflow用户

发布于 2016-04-19 17:37:24

HTTP客户端(我的例子是4.5.1版本)可以像这样使用系统代理:

代码语言:javascript
复制
HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
//or 
HttpClient httpClient = HttpClients.createSystem();
票数 20
EN

Stack Overflow用户

发布于 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。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5165126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档