2011-03-29 116 views
0

在这个给定的代码中,我的HTTP相关代码工作正常,它在Toast消息中给出了正确的结果。但是,当我应用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"; 
            } 
} 

logcat的响应:

是的,这是我的logcat的响应:

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

你得到的错误是什么? – 2011-03-29 11:19:40

+0

在上一页如果我点击的ID比根据该ID的信息必须显示..但在这里,当我点击,强制关闭错误来了,但在这段代码,如果我评论整个萨克斯解析器代码,然后我的http代码运行成功无需解析 – Sam 2011-03-29 11:23:07

+0

某处必须有更多信息的消息。 catch块中的打印件是否可以打印任何东西? – 2011-03-29 11:26:51

回答

2

你的MyPlayerInfo 91线有NullPointerException,在onCreate()方法。

此外,请勿在主应用程序线程上执行网络I/O和解析。请使用AsyncTask或其他形式的后台线程。

+0

thanx :),这将是非常有用的 – Sam 2011-03-29 12:27:10

+0

在http响应字符串工作正常,但在解析器响应字符串为空..如何解决这个??? – Sam 2011-03-31 08:40:18

+0

现在我的代码工作..对不起,迟到的答复...我使用http和正在采取其反应..我的PHP不生成正确的XML这就是它给错误..其他方法我也有使用http我们可以直接使用sax解析器在php url中传递参数,这对我来说变得非常简单.. – Sam 2011-04-15 06:45:33