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