2012-11-22 60 views
1

我想從java android程序連接到http網站。 我正在試着這段代碼。但顯然,代碼不會通過「client.execute()」語句。 我已經在執行後評論過一個return語句,並且沒有通過該語句。 我錯過了什麼?來自Android的http連接

我曾嘗試非常相同的代碼,它沒有工作,所以我沒有複製完全相同的代碼形式Newboston,它仍然無法正常工作。

(代碼來自Newboston。)

在此先感謝您。

public class GetMethodEx { 

public String getInternetData() throws Exception{ 
    BufferedReader in=null; 
    String data=null; 

    try{ 
     HttpClient client=new DefaultHttpClient(); 
     URI website=new URI("http://www.mybringback.com"); 
     HttpGet request=new HttpGet(); 
     request.setURI(website); 

     HttpResponse response=client.execute(request); 

    // if(data==null) 
    //  return "bfdvhf"; 

     in =new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer sb=new StringBuffer(""); 
     String l=""; 
     String nl=System.getProperty("line.separator"); 

     while((l=in.readLine())!=null){ 
      sb.append(l + nl); 
      return "hfeuhfuie"; 

     } 
     in.close(); 
     data=sb.toString(); 
     return data; 
    }finally{ 
     if(in!=null) 
     { 
      try{ 
       in.close(); 
       return data; 

      } 
      catch(Exception e){ 
       e.printStackTrace(); 

      } 

     } 
    } 


} 

}

+0

你如何調用getInternetData()?從活動? 只是一個建議:任何http請求應該運行一個線程UI的外部。使用AsyncTask。 – dougcunha

+0

嘿, 是的,我只是從活動打電話。但即使我從一項活動中打電話,它應該可以正常工作嗎? 我已經準備好了我的代碼,但是這一條語句導致了一個問題。 –

+0

在這行上放置斷點,'in = new BufferedReader(new InputStreamReader(response.getEntity()。getContent()));'和e.printStackTrace在catch中。當你運行你的代碼時會發生什麼? – Simon

回答

2

請問您的應用程序崩潰/拋出異常的​​?如果是這樣,你最有可能得到NetworkOnMainThreadException異常 - 它與UI線程上的網絡相關(即嘗試直接在你的Activity類中進行網絡連接)。您必須獨立網絡並異步運行此代碼(通常使用IntentServiceAsyncTask)。

有關更多信息,請參見this article

BTW:下次總是發佈您的logcat輸出與您的問題

+0

沒有應用程序不會崩潰,我已經爲此和它只是打印異常。 –

+0

好的。什麼是例外? NetworkOnMainThreadException? –

+0

謝謝。我是這個領域的新手。 –