2014-10-20 2 views
0

내가 이것을 구현할 때 "NetworkOnMainThreadException"라고합니다.http 안드로이드 비동기 작업에서 얻을

누군가가 예제를 게시 할 수 있습니까?

많은 예제와 라이브러리를 사용해 보았지만 작동하지 않았습니다. 내 코드 :

private class HttpGetter extends AsyncTask<URL, Void, Void> { 

    @Override 
    protected Void doInBackground(URL... urls) { 
     // TODO Auto-generated method stub 
     StringBuilder builder = new StringBuilder(); 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(String.valueOf(urls[0])); 

     try { 
      HttpResponse response = client.execute(httpGet); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       InputStream content = entity.getContent(); 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(content)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 
       Log.v("Getter", "Your data: " + builder.toString()); //response data 
      } else { 
       Log.e("Getter", "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 


} 
+0

이것이 http 작업을 실행하는 유일한 코드일까요? logcat을 보여줄 수 있습니까? –

+0

어떻게 부르는지 설명하고 * 작동하지 않는 방법을 설명하십시오. 당신은 여전히'NetworkOnMainThreadException'을 얻고 있습니까 아니면 다른 일이 일어나고 있습니까? 또한이 모든 작업 코드가 있습니까? 'AsyncTask'의 다른 메소드를 오버라이드합니까? – codeMagic

+0

다른 장소에 있으면 안되는 곳에 네트워킹을 실행해야합니다. – joao2fast4u

답변

0

당신은 실행해야을 이런 일은 new HttpGetter().execute(URL)

AsyncTask은 한 번만 실행할 수 있습니다.

1

어떻게이 클래스 객체를 호출할까요? 이렇게 전화를하면 예외가 발생하지 않아야합니다.

new HttpGetter().excute(new URL("http://www.urlstring.com")); 

또는 당신은 예외없이 아래 코드로 코드를 실행할 수 있지만

StrictMode.ThreadPolicy policy = new  StrictMode.ThreadPolicy.Builder().permitAll().build(); 

StrictMode.setThreadPolicy(policy); 

ADD 안드로이드 manifest.xml 파일에이 권한이 권장되지 :

<uses-permission android:name="android.permission.INTERNET"/> 
관련 문제