2012-01-18 101 views
0

我的android应用程序发送一个web服务请求,并从xml中的web服务获取响应,并使用JSON中的嵌入数据。我将它保存在一个字符串中。现在我不知道如何从这个字符串中获取JSON数据。如何从服务器的XML响应中获取JSON?

System.setProperty("http.keepAlive", "false"); 
      // request parameters 
      HttpParams params = httpClient.getParams(); 
      HttpConnectionParams.setConnectionTimeout(params, 10000); 
      HttpConnectionParams.setSoTimeout(params, 15000); 
      // set parameter 
      HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), true); 

      // POST the envelope 
      HttpPost httppost = new HttpPost(url); 
      // add headers 
      httppost.setHeader("SOAPAction", soapAction); 
      httppost.setHeader("Content-Type", "text/xml; charset=utf-8"); 
    //  httppost.setHeader("Content-Length", 
    //    String.valueOf(requestEnvelope.length())); 
      httppost.setHeader("SOAPAction", "http://tempuri.org/" 
        + methodName); 



    //  String responseString = ""; 
      try { 

       // the entity holds the request 
       HttpEntity entity = new StringEntity(requestEnvelope); 
       httppost.setEntity(entity); 
HttpResponse response = httpClient.execute(httppost); 
      String result = EntityUtils.toString(response.getEntity()); 

这是从服务器得到的结果字符串中的响应。

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<ValidatePassCodeResponse xmlns="http://tempuri.org/"> 
<ValidatePassCodeResult> 
[{"ID":1929,"Headline":"Test News","Detail":"","SubmitDate":"1/17/2012 12:08:04 PM"}] 
</ValidatePassCodeResult> 
</ValidatePassCodeResponse> 
</soap:Body> 
</soap:Envelope> 

在此先感谢。

回答

2

这是我如何删除xml字符串的标签并从中获取json字符串,然后我将字符串解析为json数组并获得结果。

XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser xpp = factory.newPullParser(); 

      xpp.setInput(new StringReader(result)); 
      int eventType = xpp.getEventType(); 
      while (eventType != XmlPullParser.END_DOCUMENT) { 
       if (eventType == XmlPullParser.START_DOCUMENT) { 
        System.out.println("Start document"); 
       } else if (eventType == XmlPullParser.START_TAG) { 
        System.out.println("Start tag " + xpp.getName()); 
       } else if (eventType == XmlPullParser.END_TAG) { 
        System.out.println("End tag " + xpp.getName()); 
       } else if (eventType == XmlPullParser.TEXT) { 
        responseString = xpp.getText(); 
        System.out.println("Text " + xpp.getText()); 
       } 
       eventType = xpp.next(); 
      } 
      System.out.println("End document"); 
0

首先使用的SAXParser检索JSON。
看到这个sample
然后你解析JSON。见question

0

我得到的解决方案使用XMLPullParser。 感谢您的帮助。

+5

...和答案是什么?如果你写下你发现的内容,下一个这个问题的读者可能会受益。 – 2012-01-19 13:18:13