2013-05-15 4 views
0

Android에서 초보자이며 PHP 페이지를 연결하는 앱을 개발 중입니다. 그러나, 내 코드를 디버그 할 때 Source not found 마지막 시간에 DefaulRequestDirector.class; 그러나, 그것도 Abstracthttpclient.class에 줬다. jsonapache 패키지를 가져 왔습니다.소스 첨부 파일에 DefaultRequestDirector.class가 포함되어 있지 않습니다. Android

Source not foundHttpResponse httpResponse = httpClient.execute(httpPost);입니다.

if(method == "POST") 
      { 
       // request method is POST 
       // defaultHttpClient 
       DefaultHttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(url); 
       httpPost.setEntity(new UrlEncodedFormEntity(params)); 

       HttpResponse httpResponse = httpClient.execute(httpPost); // Source not found 
       HttpEntity httpEntity = httpResponse.getEntity(); 
       is = httpEntity.getContent(); 

      } 

로그 캣 :

05-15 16:15:46.133: W/dalvikvm(25727): threadid=1: thread exiting with uncaught exception (group=0x415262a0) 
05-15 16:15:46.138: E/AndroidRuntime(25727): FATAL EXCEPTION: main 
05-15 16:15:46.138: E/AndroidRuntime(25727): android.os.NetworkOnMainThreadException 
05-15 16:15:46.138: E/AndroidRuntime(25727): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at java.net.InetAddress.getAllByName(InetAddress.java:214) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at com.example.yoritreader.JSONParser.makeHttpRequest(JSONParser.java:59) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at com.example.yoritreader.MainActivity$1.onPreviewFrame(MainActivity.java:246) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:841) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at android.os.Looper.loop(Looper.java:137) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at android.app.ActivityThread.main(ActivityThread.java:4921) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at java.lang.reflect.Method.invokeNative(Native Method) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at java.lang.reflect.Method.invoke(Method.java:511) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 
05-15 16:15:46.138: E/AndroidRuntime(25727): at dalvik.system.NativeStart.main(Native Method) 

여러분의 도움에 감사드립니다!

+0

읽을 수 사용해야합니다. if (method.equalseIgnoreCase ("POST"))를 사용해야합니다. 앱이 다운 되나요? 그렇다면 logcat 게시 – Blackbelt

+0

그래,하지만 난 문자열 비교를 생각하지 않습니다. 디버그 모드에서는 일부 D 레벨 메시지 만 제공합니다. 하지만 LogCat의 런타임 E 레벨 메시지를 추가했습니다. – ciyo

답변

2
android.os.NetworkOnMainThreadException 

당신은 NetworkOnMainThreadException이됩니다. 즉, 사용자가 네트워크를 포함하는 작업과 같은 차단 작업을 UI Thread에 수행하고 있음을 의미합니다. 이 동작은 항상 심하게 왜곡되었지만 안드로이드 3.0 이후로 금지되었습니다. 따라서 AsyncTask에서 코드를 옮겨야합니다.

또한 자바에서는 == 연산자로 문자열 비교를 수행 할 수 없습니다.

if(method == "POST") 

이것은 잘못되었습니다. 이 방법으로 문자열을 비교할 수 없습니다 (방법 == "POST") 경우

string1.equals(string2) 

또는 string1.equalsIgnoreCase(string2)

당신은 스레드에 대해이 guide/AsyncTask를

+0

알았어요. 조언 해주셔서 감사합니다. 나는 그것이 문제를 해결하기를 희망한다! – ciyo

관련 문제