2012-11-17 32 views
1
try { 
    URL url = null; 
    url = new URL(url_string); 
    URLConnection conn = url.openConnection(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line=""; 
    while((line = reader.readLine())!=null){ 
     Log.d("html",line); 
    } 

} catch (Exception e) { 
    Log.d("Exception Error: ",e.toString()); 
} 

我只是閱讀的網站,我得到的錯誤與android.os.networkonmainthreadexceptionandroid.os.networkonmainthreadexception在Android中,ICS

我的代碼很簡單..請看看,請告訴我,我需要做的..

感謝,

回答

3

您需要訪問您的網絡移動到後臺線程,如通過AsyncTask。您目前正嘗試在主應用程序線程上執行網絡I/O,這是而不是的一個好主意。

+0

+1這是Android的安卓開始拋出此異常一件好事,沒有它,你不會看到一個問題,直到你有一個緩慢的網絡,以及它可能是用戶找到它... – MByD

0

使用這個類來運行後臺任務..

public class getConnection extends AsyncTask<String, Void, Void> 
    { 


      @Override 
      protected void onPreExecute() 
      { 
       super.onPreExecute(); 
       Utils.clearDialogs(); 
       Utils.showActivityViewer(Mainctivity.this); 
      } 

      @Override 
      protected Void doInBackground(String... arg0) 
      { 

      try 
      { 

       URL url = null; 
url = new URL(url_string); 
URLConnection conn = url.openConnection(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
String line=""; 
while((line = reader.readLine())!=null){ 
    Log.d("html",line); 
      } 
      catch (Exception e) 
      { 
      e.printStackTrace(); 
      } 

      return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) 
      { 
       super.onPostExecute(result); 
       Utils.hideActivityViewer(); 

      } 
      catch (Exception e) 
      { 
      Log.v("log", e.toString()); 
      } 
      } 

      } 
+0

我很抱歉,我知道我在Android上很新,但我不確定Utils類從哪裏來。你能告訴我應該從哪裏導入Utils類?你的代碼給了我,找不到Utils類。 – redpotato

+0

我其實還在得到相同的networkonmain異常。 嘗試{ \t \t URL url = null; \t \t url = new URL(url_string); \t \t URLConnection conn = url.openConnection(); \t \t BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); \t \t String line =「」; ((line = reader.readLine())!= null){ \t \t Log.d(「html」,line); } \t}趕上(例外五){ \t \t e.printStackTrace(); \t} 我認爲它獲取異常時conn.getInputStream()被調用 任何想法? – redpotato