2012-06-15 2 views
0

안녕하세요 저는 나중에 안드로이드 응용 프로그램을 통해 웹 페이지 소스를 다운로드하는 간단한 연결을 설정하려고합니다. 그래서 나중에 내 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

당신은 URL을로드하려는 :

http:www.google.com 

주 부족 슬래시. 그것은 실제 주소가 아닙니다.

1

웹 소스에서 데이터를 가져 오는 동안 문자열을 연결하려면 StringBuilder을 사용해야합니다. 매번 문자열을 연결하면 설정된 연결 속도가 느려집니다. 여기에 모두 StringBuilder에 대한 기준은 다음과 같습니다 편집을 할 http://developer.android.com/reference/java/lang/StringBuilder.html

또한 읽고 데이터베이스에서 작성하거나 서비스를 실행, 네트워크 운영을 수행 할 때. 웹 소스에서 데이터를 얻으려고하는 것과 마찬가지로 주 스레드 (일명 UI 스레드)에서 실행되는 대신 별도의 스레드에서 이러한 종류의 작업을 실행하는 것이 좋습니다. 이 작업을 위해 별도의 스레드를 사용하지 않으면 항상 예외 및 응용 프로그램 충돌이 발생합니다. 작업에 가장 적합한 솔루션은 AsynchTask입니다. 이러한 참조를 체크 아웃 :
http://developer.android.com/guide/components/processes-and-threads.html
AsynchTask가 제공하는 무엇을 : 참조 :

는 작업자 스레드 섹션을 참조하십시오
http://developer.android.com/reference/android/os/AsyncTask.html