HttpGet在android中,UnresolvedHostException

时间:2009-12-24 20:31:36

标签: android http emulation

我对android很新,并尝试实现http clientREST 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

3 个答案:

答案 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?