마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

HttpClient 질문입니다.

0 추천

제가 버튼을 누르면 http주소를 parse하는 걸 구현하고있는데요. parse버튼을 누르면 아래있는 parsePlaylistFile()로 들어갑니다. 근데 디버깅해본결과 아래 빨간줄에서 아예 팅겨버립니다. edittext에 들어간 url값은 http://live.kboo.fm:8000/high.m3u로 미디어플레이어로 접속해본 결과 잘 재생되는 것을 확인했습니다. 디버깅해도 계속 저기서 튕겨서 어디가 문제인지를 몰라 이렇게 올려봅니다. 도와주세요 ㅠㅜ...

 

private void parsePlaylistFile() {
  // TODO Auto-generated method stub
  playlistItems = new Vector<PlaylistFile>();

  HttpClient httpClient = new DefaultHttpClient();
  HttpGet getRequest = new HttpGet(editTextUrl.getText().toString());
  

  Log.v("URI", getRequest.getURI().toString());

  try {
   HttpResponse httpResponse = httpClient.execute(getRequest);
   if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
    Log.v("HTTP ERROR", httpResponse.getStatusLine()
      .getReasonPhrase());
   } else {
    InputStream inputStream = httpResponse.getEntity().getContent();
    BufferedReader bufferedReader = new BufferedReader(
      new InputStreamReader(inputStream));

    String line;
    while ((line = bufferedReader.readLine()) != null) {
     Log.v("PLAYLISTLINE", "ORIG: " + line);

     if (line.startsWith("#")) {

     } else if (line.length() > 0) {
      String filepath = "";

      if (line.startsWith("http://")) {
       filepath = line;
      } else {
       filepath = getRequest.getURI().resolve(line)
         .toString();
      }
      PlaylistFile playlistFile = new PlaylistFile(filepath);
      playlistItems.add(playlistFile);
     }
    }
    inputStream.close();
   }
  } catch (ClientProtocolException e) {
   // TODO: handle exception
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  PlayButton.setEnabled(true);

 }

 

여기서부턴 logcat오류입니다.

05-07 11:30:33.021: D/CLIPBOARD(8939): Hide Clipboard dialog at Starting input: finished by someone else... !
05-07 11:30:54.511: V/URI(8939): http://live.kboo.fm:8000/high.m3u
05-07 11:30:54.531: D/AndroidRuntime(8939): Shutting down VM
05-07 11:30:54.531: W/dalvikvm(8939): threadid=1: thread exiting with uncaught exception (group=0x40c401f8)
05-07 11:30:54.541: E/AndroidRuntime(8939): FATAL EXCEPTION: main
05-07 11:30:54.541: E/AndroidRuntime(8939): android.os.NetworkOnMainThreadException
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at java.net.InetAddress.getAllByName(InetAddress.java:220)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at com.example.streamaudio.MainActivity.parsePlaylistFile(MainActivity.java:91)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at com.example.streamaudio.MainActivity.onClick(MainActivity.java:71)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.view.View.performClick(View.java:3620)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.view.View$PerformClick.run(View.java:14322)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.os.Handler.handleCallback(Handler.java:605)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.os.Looper.loop(Looper.java:137)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at android.app.ActivityThread.main(ActivityThread.java:4507)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at java.lang.reflect.Method.invokeNative(Native Method)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at java.lang.reflect.Method.invoke(Method.java:511)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
05-07 11:30:54.541: E/AndroidRuntime(8939):  at dalvik.system.NativeStart.main(Native Method)
 

 

 

wonie86 (300 포인트) 님이 2013년 5월 7일 질문

1개의 답변

0 추천

NetworkOnMainThreadException 

스레드로 돌리세요~

허니컴 이후부터는 네트워크 부분은 스레드로 돌리셔야 합니다.

노예의집 (23,370 포인트) 님이 2013년 5월 7일 답변
...