2013-03-15 3 views
0

나는 안드로이드 응용 프로그램을 개발하고 모든 것이 올바르지 만 오류는 아니지만 코드를 실행할 때 아래에서이 오류를 발견하고 코드를 추적하면이 줄에 멈 춥니 다 :threadid = 1 잡히지 않는 예외 (그룹 = 0x410702a0)로 끝나는 스레드

HttpResponse httpResponse = httpClient.execute(httpPost); 

코드의 일부 :

try { 
     // defaultHttpClient 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     httpPost.setEntity(new UrlEncodedFormEntity(params)); 
     Log.d("w", "2a json..................."); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     Log.d("w", "2b json..................."); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     Log.d("w", "2c json..................."); 
     is = httpEntity.getContent(); 
     Log.d("w", "3 json..................."); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

오류 :

threadid=1: thread exiting with uncaught exception (group=0x410702a0) 
FATAL EXCEPTION: main 
android.os.NetworkOnMainThreadException 
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 
    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
    at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
    at libcore.io.IoBridge.connect(IoBridge.java:112) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
    at java.net.Socket.connect(Socket.java:842) 
    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 
+1

[android.os.NetworkOnMainThreadException]의 중복 가능성 (http://stackoverflow.com/questions/6343166/android-os -networkonmainthreadexception) – assylias

+0

http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html – assylias

답변

0

이 만들기 N AsyncTask를하고 doInBackground 메소드 내부 네트워크 호출이 여기

이 코드 할

class ABCTask extends AsyncTask<String, Void, Void> { 

    private Exception exception; 

    protected void doInBackground(String... urls) { 
     try { 
     // defaultHttpClient 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     httpPost.setEntity(new UrlEncodedFormEntity(params)); 
     Log.d("w", "2a json..................."); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     Log.d("w", "2b json..................."); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     Log.d("w", "2c json..................."); 
     is = httpEntity.getContent(); 
     Log.d("w", "3 json..................."); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

    protected void onPostExecute() { 

// write what u want to do after completion of the doInBackground method 
    } 
} 

new ABCTask().execute(); 
관련 문제