我对android很新,并尝试实现http client
与REST server
进行通信。
我从Get方法开始,但是在模拟器上使用android 2.0
时遇到了一些问题。
String url = "http://www.google.fr/search?q=android"
HttpClient client = new DefaultHttpClient(new BasicHttpParams());
HttpGet getMethod = new HttpGet((url));
HttpResponse httpResponse = client.execute(getMethod);
HttpEntity = httpResponse.getEntity());
int length = (int) httpEntity.getContentLength();
=> length is -1 :-(
查看日志会给我UnresolvedHostException
。
我在谷歌搜索,发现有几个人有同样的问题,但没有找到任何答案。
是否有一种特殊的方法来配置Android模拟器以使其正常工作?
准确地说,我已在android manifest
添加了互联网访问权限。
非常感谢你的帮助。 LUC
答案 0 :(得分:2)
首先,尝试从浏览器应用程序访问该页面。如果失败,请检查防火墙或停用代理服务器。
一旦浏览器可以访问该页面,请尝试删除new BasicHttpParams()
(不需要),看看是否有帮助。否则,你所拥有的似乎没问题。
答案 1 :(得分:0)
如果您坐在代理后面,您也可以在DefaultHttpClient实例中设置代理IP /端口。执行此操作的方法类似于:
public void setProxy(DefaultHttpClient httpclient) {
final String PROXY_IP = "<insert your IP here>";
final int PROXY_PORT = <insert_PROXY_PORT#>;
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(PROXY_IP, PROXY_PORT),
new UsernamePasswordCredentials(
"username", "password"));
HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
proxy);
}
但请注意,如果您在手机上运行代码(没有任何此类代理设置),则必须禁用此功能;
在电话上,您现有的代码应该可以正常工作。
答案 2 :(得分:0)
尝试没有任何GET参数的URL(?q = android)。
String url = "http://www.google.fr/search";
我认为必须以另一种方式设置URLParams?