Android HttpClient不使用系统代理设置

Cri*_*ian 13 proxy android httpclient

当我创建DefaultHttpClient对象并尝试点击网页时,请求不会通过我在"设置"中指定的代理进行路由.

通过API文档,虽然Android确实有一个允许我读取系统代理设置的Proxy类,但我没有看到任何可以指定代理的地方.

有没有办法在HttpClient中使用代理设置?

Com*_*are 24

尝试:

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Run Code Online (Sandbox Code Playgroud)

(从这里剔除)

  • perfekt,但我必须处理设备上的Webrequests,它可能使用(不同的)Proxys或没有代理设置,是否有可能弄清楚用户是否有代理设置?我的一些客户端使用不同的封闭用户组. (3认同)

小智 9

首先,我会确保请求符合您在Android设备设置中设置的代理设置属性.你可以通过查看android.provider.Settings中的System类来通过代码确定这个;

要确定用户是否具有系统代理设置,您可以执行以下操作:

    System.getProperty("http.proxyHost");
    System.getProperty("http.proxyPort");

    System.getProperty("https.proxyHost");
    System.getProperty("https.proxyPort");
Run Code Online (Sandbox Code Playgroud)

如果您有DefaultHTTPClient的实例,那么您可以检查它是否也具有相关的代理设置.

    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);
Run Code Online (Sandbox Code Playgroud)

这些都是"获取"代理设置的方法,"set"方法以相同的方式实现,可以通过System.setProperty或httpclient.setParams实现.

希望这有帮助!