2014-03-13 59 views
0
工作

我曾嘗試使用BufferReader的實例來讀取網頁的內容,但在運行應用程序時,它達到這條線時,立即轉移到catch塊:的BufferedReader不會在Android中

BufferedReader中讀者=新的BufferedReader(new InputStreamReader(conn.getInputStream()));

請問您能告訴我什麼是問題? 順便說一下,我已經在mainifest文件中對Internet連接進行了修復,並且在Log cat中沒有註冊錯誤! 這是我的java代碼:

 Thread thrd = new Thread(new Runnable() {   
     @Override 
     public void run() { 
      final Button btn = (Button) findViewById(R.id.btn_1); 

      final TextView tv = (TextView) findViewById(R.id.tv_1); 


      btn.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        try { 
        URL url = null; 
        url = new URL("http://www.google.com/"); 
        URLConnection conn = url.openConnection(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

        String Line = ""; 
       while((Line= reader.readLine()) != null){ 
              tv.append(Line); 
              } 
              catch (Exception e){ 
        tv.append("There is a problem"); 
              } 
       } 
      }); 

     } 
    }); 
    thrd.start(); 

    return true; 
} 
+0

打印已擦肩而過,異常的詳細信息! 「有一個問題」不是一個非常有用的消息 – donfuxx

+0

你可以請求'tv.append(「有問題」);''用'e.printStackTrace();'來查看拋出了什麼類型的異常? –

回答

1

您是否嘗試過記錄異常?東西沿線

Log.d(TAG, "onClick", e); 

在你的catch塊。

這樣說,你可能會得到一個NetworkOnMainThreadException,因爲你試圖訪問主線程上的網絡。由於網絡呼叫被阻止,這會導致用戶界面凍結 - 這是非常糟糕的用戶體驗。所有的網絡調用應該在一個單獨的線程中完成(可以是服務,AsyncTask或Thread)。

this SO answer有關NetworkOnMainThreadException