2012-07-01 28 views
4

我正在使用android 2.3.3,我做了一個rss閱讀器,它工作得很好,然後我把那個簡單的rss閱讀器的代碼整合到另一個活動中,只是複製粘貼它仔細,沒有錯誤那裏。無法連接使用httpconnection android

問題是,當我在我的模擬器上運行應用程序它給我錯誤連接異常。然後,我想通過在嘗試塊中的everyline之後加入敬酒,問題在httpconnection.connect();行。

我已經在Android清單中添加了權限,而我的logcat給出了javaio exception:error connecting的警告。

try { 
     HttpURLConnection httpURLConnection = (HttpURLConnection) connection; 
     //Toast.makeText(this, "urlconnection passed", Toast.LENGTH_SHORT).show(); 
     httpURLConnection.setAllowUserInteraction(false); 
     httpURLConnection.setInstanceFollowRedirects(true); 
     //Toast.makeText(this, "setting response method", Toast.LENGTH_SHORT).show(); 
     httpURLConnection.setRequestMethod("GET"); 
     //Toast.makeText(this, "connecting", Toast.LENGTH_SHORT).show(); 
     httpURLConnection.connect(); 
     Toast.makeText(this, "on response code", Toast.LENGTH_SHORT).show(); 
     response = httpURLConnection.getResponseCode(); 
     //Toast.makeText(this, "response code passed", Toast.LENGTH_SHORT).show(); 
     if (response == HttpURLConnection.HTTP_OK) { 
      //Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show(); 
      inputStream = httpURLConnection.getInputStream(); 
     } 

    } catch (Exception e) { 
     // TODO: handle exception 
     throw new IOException("Error connecting"); 
    } 

這裏它創建的對象的代碼:

URL url = new URL(UrlString); 
URLConnection connection = url.openConnection(); 
if (!(connection instanceof HttpURLConnection)) 
    throw new IOException("Not a HTTP connection"); 
+0

請確保您的正文 –

+0

我已經在我的清單文件中包含了該文件 – Salik

+0

顯示您創建連接對象的代碼 –

回答

1

它給networkonmainthread例外

這意味着你在主線程上做網絡業務,這不是允許在嚴格模式下使用。

「在主線程中」通常表示您正在處理事件處理程序,如onResume,或OnClickListener的onClick方法中。你可以看看這篇文章(Painless threading)以瞭解問題的原因以及爲什麼不允許。通常,如果您在主線程中執行網絡操作,則會阻止GUI事件的處理,並且如果網絡操作速度較慢,則您的應用程序將無法響應。

Strict Mode出現在API 9級,所以這解釋了爲什麼你有問題,如果分SDK版本是10,爲什麼它分鐘SDK版本的作品8.

您應該使用AsyncTask或其他方法來做到這一點在背景中。你可以參考1