2013-05-07 76 views
3

我完全絕望,這就是爲什麼我要求你幫忙。我有一個Android應用程序下面的代碼:Android上的HTTP請求

public void OnButtonClick(View view) throws ClientProtocolException, IOException, Exception 
{  
    URL yahoo = new URL("http://privyrobsi.sk/brigades/getBrigades.json"); 
    URLConnection yc = yahoo.openConnection(); 
    BufferedReader in = new BufferedReader(
          new InputStreamReader(
          yc.getInputStream())); 
    String inputLine; 

    EditText ET = (EditText) findViewById(R.id.editText2); 
    while ((inputLine = in.readLine()) != null) ET.setText(ET.getText()+inputLine);   
    in.close();   
} 

我得到這個代碼here,我只是修改了一些。 當我嘗試將代碼作爲獨立的Java應用程序運行時,它可以正常工作。但是當我嘗試在android中使用它時,模擬器說不幸的是,應用程序停止了。 我保存了LogCat的日誌here。 我的清單文件中也有使用權限android:name =「android.permission.INTERNET」。

回答

4

您無法在主線程中執行網絡操作。在asynctask中執行此操作。

更新:

你logcat的數據顯示你有NetworOnMainThreadException。根據doc

應用程序嘗試在其主線程上執行聯網操作時引發的異常。

這僅適用於針對Honeycomb SDK或 的應用程序。針對早期SDK版本的應用程序允許在其主要事件循環線程上執行聯網,但不鼓勵 。

解決方案:

正如我已經提到的,你必須使用一個不同的線程來執行網絡操作。您可以使用以下

  1. 的AsyncTask
  2. Differet工作者線程
  3. 處理器

檢查這個thread。這個問題的答案涵蓋了幾乎所有的解決方案