我发现设置http.proxyHost并且http.proxyPort对httpClient没用。如何强制httpClient通过环境变量或VM参数或类似的东西使用代理而不更改代码?
答案 0 :(得分:21)
答案 1 :(得分:10)
HTTP客户端(我的案例为v 4.5.1)可以使用这样的系统代理:
Button btnLicencePlate = (Button) findViewById(R.id.licenceplatecontainer);
btnLicencePlate.setText(txtLicenceplate.getText().toString());
答案 2 :(得分:6)
您可以使用HttpClient
方法自行强制代理client.getHostConfiguration().setProxy(host, port)
。我通常在HttpClient
周围创建包装类,在初始化这个类时,我从任何来源设置代理(环境变量......)。
我在java.net.ProxySelector.setDefault(new MyProxySelector())
无法直接设置代理的情况下使用了HttpClient
。您必须实现自己的ProxySelector类,并且方法select基于请求的URI进行代理选择。您可以使用url->代理映射将特定URI地址配置为所需的代理,或者为全局请求的URI返回一个代理。
正如我在HttpClient源代码中所看到的,没有其他方法如何配置仅代理setProxy方法。我正在使用commons-httpclient-3.1。
答案 3 :(得分:0)
AFAIK,如果没有代码更改,您无法对此进行管理,但您可以使用自己的连接管理器更接近本机行为。见ProxySelector changes URL's scheme from https:// to socket://
答案 4 :(得分:-12)
这有帮助吗?
System.setProperty("https.proxyHost", proxy_host);
System.setProperty("http.proxyHost", proxy_host);
System.setProperty("https.proxyPort", proxy_port);
System.setProperty("http.proxyPort", proxy_port);
或者你可以通过命令行传递相同的属性