Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在分析ksoap响应中的属性名称和值_Android_Ksoap2 - Fatal编程技术网

Android 正在分析ksoap响应中的属性名称和值

Android 正在分析ksoap响应中的属性名称和值,android,ksoap2,Android,Ksoap2,因此,我已经将我的Web服务毫无问题地连接到我的Android应用程序,并且可以毫无问题地获得响应,但我想知道是否有任何方法可以获取SoapObject的属性名称以及值,而不仅仅是获取值 例如,我得到了这个响应(对于一个示例来说,这是一个非常简单的响应) 现在,在解析时,我希望能够从响应中获取值,然后创建一个列表(如NSDictionary),这样我就可以拥有一个键/值对,如: AsOfDate = 2014-02-12T12:58:27-08:00; StatusID = 9; 但到目前为止

因此,我已经将我的Web服务毫无问题地连接到我的Android应用程序,并且可以毫无问题地获得响应,但我想知道是否有任何方法可以获取SoapObject的属性名称以及值,而不仅仅是获取值

例如,我得到了这个响应(对于一个示例来说,这是一个非常简单的响应)

现在,在解析时,我希望能够从响应中获取值,然后创建一个列表(如NSDictionary),这样我就可以拥有一个键/值对,如:

AsOfDate = 2014-02-12T12:58:27-08:00;
StatusID = 9;
但到目前为止,我还无法缩小解析时如何获取属性名的范围,以下是我到目前为止得到的:

SoapObject errortable = (SoapObject)dataset.getProperty("ErrorTable");
                for (int i = 0; i < errortable.getPropertyCount(); i++) {
                    Object object = errortable.getProperty(i);
                    //Log.d(ENSI_DEBUG, "the object is: " + object.getClass());
                    if (object instanceof SoapObject) {
                        Log.d(ENSI_DEBUG, "the object is a soap object = " + object);
                    }
                    if (object instanceof SoapPrimitive) {
                        Log.d(ENSI_DEBUG, "the object contains value: " + object.toString() + " and name: " //here's where I would like to get the property name to create the key/value pair );
                    }
                }
SoapObject errortable=(SoapObject)dataset.getProperty(“errortable”);
对于(int i=0;i
我发现了问题所在,我需要使用Property Info对象来获取名称,因此我最终使用下面的代码来获取所需的内容

SoapObject result = (SoapObject) response.getProperty("result");
        SoapObject diffgram = (SoapObject) result.getProperty("diffgram");
        SoapObject dataset = (SoapObject) diffgram.getProperty("NewDataSet");
        for (int j = 0; j < dataset.getPropertyCount(); j++) {
            SoapObject finalObject = (SoapObject) dataset.getProperty(j);
            for (int i = 0; i < finalObject.getPropertyCount(); i++) {
                Object object = finalObject.getProperty(i);
                PropertyInfo propertyInfo = new PropertyInfo();
                finalObject.getPropertyInfo(i, propertyInfo);
                if (object instanceof SoapPrimitive) {
                    hashMap.put(propertyInfo.name, object.toString());
                }
            }
            dataList.add(hashMap);
        }
SoapObject result=(SoapObject)response.getProperty(“result”);
SoapObject diffgram=(SoapObject)result.getProperty(“diffgram”);
SoapObject数据集=(SoapObject)diffgram.getProperty(“NewDataSet”);
对于(int j=0;j
您可以使用此示例代码。它适用于我

           if (envelope.bodyIn instanceof SoapObject) { // SoapObject =
                                                            // SUCCESS
                SoapObject response = (SoapObject) envelope.getResponse();
                int count = response.getPropertyCount();
                Log.i("count", Integer.toString(count));

                int StatusID= Integer.parseInt(response
                        .getPropertyAsString("StatusID"));
                Log.i("StatusID", Integer.toString(StatusID));
                String AsOfDate= (response
                        .getPropertyAsString("AsOfDate"));
                Log.i("AsOfDate", AsOfDate);

            }
           if (envelope.bodyIn instanceof SoapObject) { // SoapObject =
                                                            // SUCCESS
                SoapObject response = (SoapObject) envelope.getResponse();
                int count = response.getPropertyCount();
                Log.i("count", Integer.toString(count));

                int StatusID= Integer.parseInt(response
                        .getPropertyAsString("StatusID"));
                Log.i("StatusID", Integer.toString(StatusID));
                String AsOfDate= (response
                        .getPropertyAsString("AsOfDate"));
                Log.i("AsOfDate", AsOfDate);

            }