如何从Android应用程序中的SOAP请求解析JSON文件中的响应

时间:2011-06-23 21:20:40

标签: android soap

我的SOAP请求和SOAP响应如下:

Test
To test the operation using the HTTP POST protocol, click the 'Invoke' button.
Parameter   Value
accessCode: xxxxxx
            Invoke     


SOAP 1.1

以下是SOAP 1.1请求和响应示例。显示的占位符需要替换为实际值。

POST /UI/WebServices/CalManager.asmx HTTP/1.1
Host: login.nediso.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://nediso.com/add/login"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <add_x002F_login xmlns="http://nediso.com/">
      <accessCode>string</accessCode>
    </add_x002F_login>
  </soap:Body>
</soap:Envelope>

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <add_x002F_loginResponse xmlns="http://nediso.com/">
      <add_x002F_loginResult>string</add_x002F_loginResult>
    </add_x002F_loginResponse>
  </soap:Body>
</soap:Envelope>

这里我发送上述SOAP请求格式中指定的带有访问码的SOAP请求,例如,xxxxx。在下面我得到响应为字符串。每当我输入访问代码并单击SOAP请求正上方的Invoke按钮时,我将.Json文件作为响应。这里的问题是我是将String作为响应还是.Json文件作为响应。如果是.Json文件如何处理和解析它?

1 个答案:

答案 0 :(得分:0)

不确定您的意思是什么,但很容易从您的请求中解析json响应。您可以使用here中的google-gson库。将库添加到项目后,您可以执行以下操作:

public static String ParseJSON(String theResponse, String tag){
    try{
          String tempResp = theResponse.toUpperCase();
          String tempTag = tag.toUpperCase();
          JSONObject outer = new JSONObject(tempResp);
          String data = (String)outer.get(tempTag);
          return data;
        }
        catch(JSONException e) {
            Log.e(LOG_TAG, e.toString());
        }
}

此函数将返回作为参数传递的data的{​​{1}}。例如:

tag

赖安