2011-03-29 4 views
0

이 코드에서는 제 HTTP 관련 코드가 올바르게 작동하며 토스트 메시지에서 올바른 결과를 제공합니다. 그러나 HTTP 콘텐츠 (XML)의 구문 분석을 적용하면 강제로 닫힙니다.HTTP를 통해 XML을 구문 분석하는 동안 오류가 발생했습니다.

내가 여기서하고있는 것과 정확히 무슨 문제가 있습니까?

public class Player extends Activity { 

    String d=""; 
    TextView id[]; 
    TextView name[]; 
    String str; 
    TableLayout t1; 
    private HttpEntity responseEntity; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.player); 

     TableLayout t1 = (TableLayout) findViewById(R.id.myTable); 

     Intent i = getIntent(); 
     Bundle b = i.getExtras(); 
     String str = b.getString("ARRIVING_FROM"); 

     TextView title = (TextView) findViewById(R.id.TextView01); 
     title.setText(str); 

      d=d+""; 
      d = tryLogin(str); 
      System.out.println("Value of D"+d.substring(0, 1)); 
      if(d.substring(0, 1).equalsIgnoreCase("1")) 
      //if(d.equals(str)) 
      { 

       Toast.makeText(getApplicationContext(), "OOPS", Toast.LENGTH_SHORT).show(); 
      } 
    else 
     Toast.makeText(getApplicationContext(), d, Toast.LENGTH_SHORT).show(); 

    try 
     { 
      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 

      XMLHandler myXMLHandler = new XMLHandler(); 
      xr.setContentHandler(myXMLHandler); 
      xr.parse(retrieveInputStream(responseEntity)); 
      } catch (Exception e) { 
       System.out.println("XML Parsing Excpetion = " + e); 
     } 


     final ScoreList scorelist = XMLHandler.scorelist ; 

     id = new TextView[scorelist.getName().size()]; 
     name = new TextView[scorelist.getName().size()]; 

     for (int i1 = 0; i1 < scorelist.getName().size(); i1++) { 

      TableRow tr = new TableRow(this); 
      tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

      id[i1]= new TextView(this); 
      id[i1].setText(scorelist.getId().get(i1)); 
      id[i1].setTextColor(Color.WHITE); 
      id[i1].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

      tr.addView(id[i1]); 

      name[i1]= new TextView(this); 
      name[i1].setText(scorelist.getName().get(i1)); 
      name[i1].setTextColor(Color.WHITE); 
      name[i1].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
      tr.addView(name[i1]); 


      t1.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     } 
    } 

       private InputSource retrieveInputStream(HttpEntity responseEntity) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

       protected String tryLogin(String str) 
       { 

          DefaultHttpClient client = new DefaultHttpClient(); 
          HttpPost httppost = new HttpPost("http://ip_address/test/player_details.php?player_id="+str.replace(' ', '+')); 
          List nvps = new ArrayList(); 
          nvps.add(new BasicNameValuePair("player_id", str)); 

          try 
          { 


            UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps,HTTP.UTF_8); 
            httppost.setEntity(p_entity); 
            HttpResponse response = client.execute(httppost); 
            Log.v("MyPlayerInfo", response.getStatusLine().toString()); 
            HttpEntity responseEntity = response.getEntity(); 
            InputStream in=responseEntity.getContent(); 
            byte[] bData = new byte[1024]; 

            in.read(bData); 
            System.out.println("In Data"+in.toString()); 
            String st=new String (bData); 
            d =st; 
            System.out.println("Response String from server"+st); 
            Log.v("MyPlayerInfo", "Set response to responseEntity"); 
            return d; 
            } catch(Exception e) 
            { 
             Log.i("Catch","Exception generate in Post"); 
             e.printStackTrace(); 
             }return"0"; 
            } 
} 

로그 캣 응답 :

네이 내 로그 캣의 반응이다 : 당신은 onCreate() 방법, MyPlayerInfo의 91에 NullPointerException

03-29 17:01:24.028: DEBUG/AndroidRuntime(2300): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 
03-29 17:01:24.028: DEBUG/AndroidRuntime(2300): CheckJNI is ON 
03-29 17:01:24.218: DEBUG/AndroidRuntime(2300): --- registering native functions --- 
03-29 17:01:24.988: DEBUG/AndroidRuntime(2300): Shutting down VM 
03-29 17:01:24.998: DEBUG/dalvikvm(2300): Debugger has detached; object registry had 1 entries 
03-29 17:01:25.028: INFO/AndroidRuntime(2300): NOTE: attach of thread 'Binder Thread #3' failed 
03-29 17:01:36.128: INFO/System.out(2314): Response String from server1ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ 
03-29 17:01:36.128: VERBOSE/MyParsingExample(2314): Set response to responseEntity 
03-29 17:01:36.128: INFO/System.out(2314): Value of D1 
03-29 17:01:36.138: INFO/ActivityManager(43): Starting activity: Intent { cmp=android.example/.MyPlayerInfo (has extras) } 
03-29 17:01:36.408: DEBUG/dalvikvm(2314): GC_FOR_MALLOC freed 3151 objects/182456 bytes in 85ms 
03-29 17:01:36.508: VERBOSE/MyPlayerInfo(2314): HTTP/1.1 200 OK 
03-29 17:01:36.508: INFO/System.out(2314): In [email protected] 
03-29 17:01:36.528: INFO/System.out(2314): Response String from server<result> 
03-29 17:01:36.528: INFO/System.out(2314):      <playerid>1</player_id> 
03-29 17:01:36.528: INFO/System.out(2314):      <player_name>Sachin Tendulkar</player_name> 
03-29 17:01:36.538: INFO/System.out(2314):     </result>ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ 
03-29 17:01:36.538: VERBOSE/MyPlayerInfo(2314): Set response to responseEntity 
03-29 17:01:36.538: INFO/System.out(2314): Value of D< 
03-29 17:01:36.568: INFO/System.out(2314): XML Parsing Excpetion = java.lang.NullPointerException 
03-29 17:01:36.578: DEBUG/AndroidRuntime(2314): Shutting down VM 
03-29 17:01:36.578: WARN/dalvikvm(2314): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314): FATAL EXCEPTION: main 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.example/android.example.MyPlayerInfo}: java.lang.NullPointerException 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.os.Looper.loop(Looper.java:123) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at dalvik.system.NativeStart.main(Native Method) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314): Caused by: java.lang.NullPointerException 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.example.MyPlayerInfo.onCreate(MyPlayerInfo.java:91) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
03-29 17:01:36.598: ERROR/AndroidRuntime(2314):  ... 11 more 
03-29 17:01:36.618: WARN/ActivityManager(43): Force finishing activity android.example/.MyPlayerInfo 
03-29 17:01:36.628: WARN/ActivityManager(43): Force finishing activity android.example/.MyParsingExample 
03-29 17:01:37.174: WARN/ActivityManager(43): Activity pause timeout for HistoryRecord{44051d20 android.example/.MyPlayerInfo} 
03-29 17:01:38.508: INFO/Process(2314): Sending signal. PID: 2314 SIG: 9 
03-29 17:01:38.538: INFO/ActivityManager(43): Process android.example (pid 2314) has died. 
03-29 17:01:38.538: INFO/WindowManager(43): WIN DEATH: Window{440299d8 android.example/android.example.MyParsingExample paused=true} 
03-29 17:01:38.578: WARN/NotificationService(43): Object died trying to hide notification [email protected] in package android.example 
03-29 17:01:38.578: WARN/ActivityManager(43): setProcessForeground called on unknown pid: 2314 
03-29 17:01:38.688: WARN/InputManagerService(43): Got RemoteException sending setActive(false) notification to pid 2314 uid 10074 
03-29 17:01:47.592: WARN/ActivityManager(43): Activity destroy timeout for HistoryRecord{43f68630 android.example/.MyParsingExample} 
03-29 17:01:47.592: WARN/ActivityManager(43): Activity destroy timeout for HistoryRecord{44051d20 android.example/.MyPlayerInfo} 
+0

오류가 발생했습니다. –

+0

이전 페이지에서 내가 ID를 클릭하면 정보가 표시되어야합니다. 그러나 여기를 클릭하면 강제로 닫기 오류가 발생하지만이 코드에서는 전체 sax 파서 코드에 주석을 달면 내 http 코드가 성공적으로 실행됩니다. 구문 분석하지 않고 – Sam

+0

어딘가에 자세한 정보가있는 메시지가 있어야합니다. catch 블록의 인쇄물에 아무 것도 인쇄되지 않습니까? –

답변

2

.

또한 네트워크 I/O 및 분석을 주 응용 프로그램 스레드에서 수행하지 마십시오. AsyncTask 또는 다른 형태의 백그라운드 스레드를 사용하십시오.

+0

thanx :) HTTP 응답 문자열에서 – Sam

+0

이 올바르게 작동하지만 파서 응답 문자열이 null 인 경우 ..이 문제를 해결하는 방법 ??? – Sam

+0

이제 내 코드가 작동 중입니다 ... 늦게 답장을 드려 죄송합니다 ... 나는 HTTP를 사용하고 응답을하고있었습니다 .. 내 PHP는 적절한 XML을 생성하지 못했습니다 그것은 오류를주고있는 그게 .. 다른 방법도 내가 http를 사용하는 대신있어 n은 우리가 직접 sax 파서를 사용하여 php url의 매개 변수를 전달할 수있는 응답을 데리고 .. 그게 나를 위해 매우 쉽게된다 .. – Sam