2012-06-15 30 views
0

你好,我試圖設置一個簡單的連接,通過一個android應用程序下載網頁源,所以我可以稍後與我的API一起使用它。我的代碼低音顯示沒有錯誤,但運行時應用程序退出時運行此代碼。當我註釋掉BufferReader線的應用繼續正常所以這個問題必須與這行代碼:BufferReader Android

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

而且婁我已經得到了我從使用它在那裏我完整的代碼片段。

 currentCustomer.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) { 

      } 

     } 
    }); 

任何幫助,將不勝感激:)

和這裏的堆棧跟蹤:

06-15 16:15:50.911: D/dalvikvm(925): GC_FOR_ALLOC freed <1K, 4% free 7249K/7495K, paused 59ms 
06-15 16:15:51.049: D/dalvikvm(925): GC_CONCURRENT freed <1K, 4% free 7249K/7495K, paused 5ms+4ms 
06-15 16:15:51.159: V/TLINE(925): new: [email protected] 
06-15 16:15:51.489: V/TLINE(925): new: [email protected] 
06-15 16:15:55.019: W/System.err(925): java.lang.NullPointerException 
06-15 16:15:55.039: W/System.err(925): at  org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.hashCode(HttpConnection.java:296) 
06-15 16:15:55.039: W/System.err(925): at java.util.HashMap.get(HashMap.java:302) 
06-15 16:15:55.039: W/System.err(925): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:73) 
06-15 16:15:55.039: W/System.err(925): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
06-15 16:15:55.049: W/System.err(925): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
06-15 16:15:55.049: W/System.err(925): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038) 
06-15 16:15:55.049: W/System.err(925): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523) 
06-15 16:15:55.049: W/System.err(925): at com.kylemcbride.SqueakyClean.SqueakyCleanActivity$1.onClick(SqueakyCleanActivity.java:48) 
06-15 16:15:55.049: W/System.err(925): at android.view.View.performClick(View.java:3100) 
06-15 16:15:55.049: W/System.err(925): at android.view.View$PerformClick.run(View.java:11644) 
06-15 16:15:55.059: W/System.err(925): at android.os.Handler.handleCallback(Handler.java:587) 
06-15 16:15:55.059: W/System.err(925): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-15 16:15:55.069: W/System.err(925): at android.os.Looper.loop(Looper.java:126) 
06-15 16:15:55.069: W/System.err(925): at android.app.ActivityThread.main(ActivityThread.java:3997) 
06-15 16:15:55.069: W/System.err(925): at java.lang.reflect.Method.invokeNative(Native Method) 
06-15 16:15:55.069: W/System.err(925): at java.lang.reflect.Method.invoke(Method.java:491) 
06-15 16:15:55.080: W/System.err(925): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
06-15 16:15:55.080: W/System.err(925): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
06-15 16:15:55.080: W/System.err(925): at dalvik.system.NativeStart.main(Native Method) 

回答

1

你嘗試加載的網址:

http:www.google.com 

注缺乏的斜槓。這不是真正的地址。

1

從Web源獲取數據時,應該使用StringBuilder來連接字符串。每次連接字符串會降低建立的連接速度。下面是StringBuilder的一個參考:http://developer.android.com/reference/java/lang/StringBuilder.html

EDITED 執行網絡操作時,讀取和寫入數據庫或正在運行的服務也。就像您試圖從Web源獲取數據一樣,建議您在單獨的線程中運行這些類型的任務,而不是在主線程(也稱爲UI線程)上運行。當你不使用這個單獨的線程時,你將永遠不得不面對異常和應用程序崩潰。對於您正在進行的工作的最佳解決方案,您應該使用AsynchTask。結帳這些引用:

見Worker線程的部分:
http://developer.android.com/guide/components/processes-and-threads.html
看看AsynchTask必須提供:
http://developer.android.com/reference/android/os/AsyncTask.html

相關問題