2009-12-24 80 views
0

我很新的android和嘗試執行​​溝通到REST serverHttpGet在android中,UnresolvedHostException

我開始使用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中添加了Internet訪問。

非常感謝您的幫助。 Luc

+0

我沒有看到UnresolvedHostException了。似乎它在我嘗試通過瀏覽器訪問URL後消失了。我無法弄清楚發生了什麼事。我會繼續測試並更新問題。 非常感謝您的幫助。 – Luc 2009-12-29 08:32:26

回答

2

首先,嘗試從瀏覽器應用程序訪問該頁面。如果失敗,請檢查您的防火牆或停用您的代理服務器。

一旦瀏覽器可以訪問該頁面,嘗試擺脫new BasicHttpParams()(這是不需要的),看看是否有幫助。否則,你有什麼好的。

+0

+1 除了禁用代理外,您還可以代理啓用DefaultHttpClient實例。 – Samuh 2009-12-25 08:18:12

+0

非常感謝,我會試試這個,我猜這個模擬器與真實情況有些不同,我是對的嗎? – Luc 2009-12-25 21:16:04

+0

對不起,我遲到的回覆。 我可以通過瀏覽器訪問該網址(http://www.google.fr/search?q=toto),工作正常。但是這仍然沒有通過代碼工作(有或沒有'新的BasicHttpParams()')。 我在google上的搜索也指出這可能是因爲DNS問題。提出的解決方案之一是建立一個DNS服務器並運行指定該服務器的URL的模擬器。如果是這種情況,我仍然無法理解,這是在瀏覽器中工作...我有點迷失在這裏:( 非常感謝, Luc – Luc 2009-12-28 20:51:58

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);  


     } 

但請注意,如果你在手機上運行的代碼(這不會有任何這樣的代理服務器設置),則必須禁用此功能;
在手機上,您現有的代碼應該可以正常工作。

+0

您好, 感謝您的回覆。不,我不是代理的背後。 我會嘗試在真正的手機上測試我的代碼。 非常感謝。 – Luc 2009-12-25 21:30:30

0

嘗試使用沒有任何GET參數的URL(?q = android)。

String url = "http://www.google.fr/search"; 

我認爲URLParams必須以另一種方式設置?

+0

你好,因爲它是一個HttpGet方法,我認爲參數必須在url中。事實上,現在工作正常(請參閱我在接受的答案中的評論)。謝謝,Luc – Luc 2010-01-07 09:44:14