在Android中解析来自SOAP响应的数据

夏瓦尔·卡拉瓦迪亚

我有以下肥皂输出:

tabResponse
{
  tabResult=anyType
 {
   schema=anyType
  {
    element=anyType
     {complexType=anyType
       {
        choice=anyType
       {
         element=anyType
        {
        complexType=anyType
         {
         sequence=anyType
         {
         element=anyType{};
         element=anyType{};
           element=anyType{}; 
          element=anyType{};
              };
             }; 
           };
           };
              };
               };
              };
          diffgram=anyType
          {
          DocumentElement=anyType
         {sh=anyType
            {SchoolName=Bialik Hebrew Day School; SchoolType=Public elementary;  SchoolGrade=JK-12; City=Toronto; 
          };
          sh=anyType
          {SchoolName=Millwood Junior School; SchoolType=Public elementary;  SchoolGrade=JK-12; City=Toronto; 
           };
          sh=anyType
           {SchoolName=Dovercourt Junior Public School; SchoolType=Public elementary;  SchoolGrade=JK-12; City=Toronto;
           };
          sh=anyType{
           SchoolName=John English Junior Middle School; SchoolType=Public elementary;  SchoolGrade=JK-12; City=Toronto;
           };
         sh=anyType
         {SchoolName=Ossington Old Orchard Public School; SchoolType=Public elementary;  SchoolGrade=JK-12; City=Toronto; 
           };
           };
            };
            };
           }

我的代码是这样的:

SoapDemoActivity.java

public class SoapDemoActivity extends Activity {

private final String NAMESPACE = "****";
private final String URL = "*******";
private final String SOAP_ACTION_1 = "********";
private final String SOAP_ACTION_5 = "*******";
private final String METHOD_NAME_5 = "******";
Button mButtonTab;
TextView mTextViewResult;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
      mButtonTab=(Button)findViewById(R.id.button5);
      mButtonTab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            getDataTable(NAMESPACE,METHOD_NAME_5,SOAP_ACTION_5,URL);

        }
    });
 }
  public void getDataTable(String NAMESPACE, String METHOD_NAME,
        String SOAP_ACTION, String URL) {
    // TODO Auto-generated method stub
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    request.addProperty("uid","29");


    SoapSerializationEnvelope envelope = new      SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        SoapObject response = (SoapObject)envelope.bodyIn;


        if(response != null)
        {

            SoapObject tabResponse = (SoapObject) response.getProperty(0);

            SoapObject tabResult = (SoapObject) tabResponse .getProperty(0);
            SoapObject schmea = (SoapObject) tabResult .getProperty(0);
            SoapObject elmemnt = (SoapObject) schmea .getProperty(0);
            SoapObject complextype = (SoapObject) elmemnt .getProperty(0);
            SoapObject choise = (SoapObject) complextype  .getProperty(0);
            SoapObject element_1 = (SoapObject) choise .getProperty(0);
            SoapObject complextype_1 = (SoapObject) element_1 .getProperty(0);
            SoapObject sequence = (SoapObject) complextype_1 .getProperty(0);
            SoapObject element_2 = (SoapObject) sequence .getProperty(0);
            SoapObject element_3 = (SoapObject) element_2 .getProperty(0);
            SoapObject element_4 = (SoapObject) element_3 .getProperty(0);
            SoapObject element_5 = (SoapObject) element_4 .getProperty(0);
            SoapObject diffgram = (SoapObject) element_5 .getProperty(0);
            SoapObject documentelement = (SoapObject) diffgram .getProperty(0);
            for(int i=0;i<documentelement.getPropertyCount();i++) 
            {
                SoapObject getAllData = (SoapObject) documentelement.getProperty(i);
                if (getAllData instanceof SoapObject) {
                    String data= getAllData.getProperty("sh").toString();
                    System.out.println("DATA "+data);

                }
            }

        }

        Object re= null;
        re = envelope.getResponse();
        Log.i("myApp", response.toString());

        System.out.println("dfdsfd "+re.toString());
        mTextViewResult.setText(re.toString());

    } catch (Exception e) {
        e.printStackTrace();
    }

}

 }

我收到如下错误消息:

10-02 03:39:26.892: W/System.err(1284): java.lang.ArrayIndexOutOfBoundsException:   length=0; index=0
10-02 03:39:26.892: W/System.err(1284):     at  java.util.Vector.arrayIndexOutOfBoundsException(Vector.java:907)
10-02 03:39:26.892: W/System.err(1284):     at java.util.Vector.elementAt(Vector.java:328)
10-02 03:39:26.892: W/System.err(1284):     at org.ksoap2.serialization.SoapObject.getProperty(SoapObject.java:139)
10-02 03:39:26.892: W/System.err(1284):     at com.demosoap.SoapDemoActivity.getDataTable(SoapDemoActivity.java:241)
10-02 03:39:26.900: W/System.err(1284):     at com.demosoap.SoapDemoActivity$5.onClick(SoapDemoActivity.java:134)

此消息在我的java文件中的第

    SoapObject element_2 = (SoapObject) sequence .getProperty(0);

如何正确解析?

夏瓦尔·卡拉瓦迪亚
    SoapObject root = (SoapObject) response.getProperty(0);
    SoapObject s_deals = (SoapObject) root.getProperty("diffgram");
    SoapObject s_deals_1 = (SoapObject) s_deals.getProperty("DocumentElement");


    System.out.println("********Count : "+ s_deals_1.getPropertyCount());

    for (int i = 0; i < s_deals_1.getPropertyCount(); i++) 
    {
        Object property = s_deals_1.getProperty(i);
        if (property instanceof SoapObject)
        {
            SoapObject category_list = (SoapObject) property;
             mStringSchoolName = category_list.getProperty("SchoolName").toString();
             mStringSchoolGrade = category_list.getProperty("SchoolGrade").toString();
             mStringSchoolType = category_list.getProperty("SchoolType").toString();
             mStringCity = category_list.getProperty("City").toString();

            System.out.println("mStringSchoolName "+mStringSchoolName);
            System.out.println("mStringSchoolGrade "+mStringSchoolGrade);
            System.out.println("mStringSchoolType"+mStringSchoolType);
            System.out.println("mStringCity "+mStringCity);
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中解析soap响应(字符串)

来自分类Dev

来自SOAP客户端的PHP解析SOAP XML响应

来自分类Dev

解析来自socket.io响应的数据

来自分类Dev

Android中的单独SOAP响应

来自分类Dev

尝试在Python中解析SOAP响应

来自分类Dev

在 PHP 中解析来自 SOAP 调用的数据时遇到问题

来自分类Dev

如何解析来自ajax响应并呈现在UI中的各种数据?

来自分类Dev

从 PHP 中的 SOAP 响应中提取数据

来自分类Dev

将来自 Api 响应的数据添加到 Android 中的 Firebase 数据库中

来自分类Dev

C# - 解析 Soap 响应以提取数据

来自分类Dev

解析来自TCPSocket的响应

来自分类Dev

从SOAP响应中解析组XML节点-目标C

来自分类Dev

如何在Blackberry的Soap响应中解析对象

来自分类Dev

在Swift中使用Web服务中的NSXMLParser解析SOAP响应

来自分类Dev

在 C# 中解析来自 json 的数据

来自分类Dev

用Java解析SOAP响应

来自分类Dev

如何解析SOAP响应

来自分类Dev

用Java解析SOAP响应

来自分类Dev

解析来自PHP中的HTTP Web服务(JSON)的响应

来自分类Dev

在 RxSwift 中解析 JSON 并处理来自 API 的错误响应

来自分类Dev

解析的SOAP响应与收到的响应不同

来自分类Dev

解析Soap响应-XML / XPATH(在soapUI中)(SoapUI响应中的命名空间)

来自分类Dev

如何使用android中的可变实时数据将来自数据存储库的改造响应中继到查看模型?

来自分类Dev

在Soap Web服务响应中获取Json数据

来自分类Dev

从Soap中的数据库查询填充多个响应项

来自分类Dev

解析来自Wikipedia API的响应

来自分类Dev

解析来自Volley的JSON响应

来自分类Dev

解析来自JSON的响应,ios?

来自分类Dev

在Android中解析JSON数据时,响应转到onFailure方法

Related 相关文章

热门标签

归档