当我创建一个DefaultHttpClient对象并尝试点击某个网页时,该请求不会通过我在“设置”中指定的代理进行路由。Android HttpClient不使用系统代理设置
翻阅API文档,我没有看到任何地方我可以指定代理,但Android确实有Proxy类,它允许我读取系统的代理设置。
有没有一种方法可以在HttpClient中使用代理设置?
当我创建一个DefaultHttpClient对象并尝试点击某个网页时,该请求不会通过我在“设置”中指定的代理进行路由。Android HttpClient不使用系统代理设置
翻阅API文档,我没有看到任何地方我可以指定代理,但Android确实有Proxy类,它允许我读取系统的代理设置。
有没有一种方法可以在HttpClient中使用代理设置?
尝试:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
(从here扑杀)
我开发,尝试抽象访问代理服务器设置为每一个Android版本的Android Proxy Library。您可以轻松获取用户当前选择的代理设置。
首先,我会确保该请求符合您在Android设备设置中设置的代理设置属性。您可以通过查看android.provider.Settings中的System类来确定此代码;
要确定用户是否有系统代理设置,你可以做到以下几点:
System.getProperty("http.proxyHost");
System.getProperty("http.proxyPort");
System.getProperty("https.proxyHost");
System.getProperty("https.proxyPort");
如果你有DefaultHTTPClient的实例,那么你可以检查它是否有相关的代理服务器设置为好。
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY);
这些都是办法“得到”的代理设置,以及“设置”方法相同的方式来实现,无论是通过System.setProperty或httpclient.setParams。
希望这有助于!
尝试:
System.setProperty("http.proxyHost", <your proxy host name>);
System.setProperty("http.proxyPort", <your proxy port>);
或
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost httpproxy = new HttpHost("<your proxy host>",<your proxy port>);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpproxy);
或
HttpHost proxy = new HttpHost("ip address",port number);
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
HttpPost httpost = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("param name", param));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.ISO_8859_1));
HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
System.out.println("Request Handled?: " + response.getStatusLine());
InputStream in = entity.getContent();
httpclient.getConnectionManager().shutdown();
没有为`HttpRoute`一个构造函数,需要一个代理主机作为参数,形成路线..但我看不到如何创建一个将使用它的HttpClient。 http://developer.android.com/reference/org/apache/http/conn/routing/HttpRoute.html – 2010-12-21 20:34:14
是的,我也看到了,但我无法弄清楚如何将它们连接在一起。 – Cristian 2010-12-21 20:53:23
Oooh ..你有没有看到这个答案? http://stackoverflow.com/questions/2539669/android-unable-to-make-httprequest-behind-firewall/2542928#2542928 – 2010-12-21 21:12:20