我在android应用中调用了Web服务,方法是getGramaNiladhariData(),
我得到的结果是一个SoapObject。

result = (SoapObject) envelope.bodyIn;  Log.d("WS", String.valueOf(result));
这就是我得到的 String.valueOf(result)
getGramaNiladhariDataResponse {getGramaNiladhariDataResult = anyType {gnName = anyType {}; address = anyType {}; workingDays = anyType {}; gnDivision = anyType {}; contactNumber = anyType {}; }; }
在这里,我正在调用的方法返回一个由5个属性组成的complexType对象。
正如我在互联网上发现的那样,由于webservice方法返回了complexType对象,因此无法获得soap对象。如果是,我应该如何获取值。
我要解决的是为什么我要获取anyType {}作为值,而不是实际值。
任何帮助,将不胜感激

最佳答案

现在为时已晚。但仅供引用,其他人认为这很有用,

通过执行String.valueOf(result),您可以打印 body 的全部内容。但是为了使用参数获取值,首先需要输入正确的SoapObject

我不知道是否有任何简单的方法来找到正确的SoapObject,但是仍然可以通过这种方式来解决问题,一旦获得正确的SoapObject,就可以完成。在下面找到如何找到正确的SoapObject

首先,您需要检查第一个SoapObject中的params数量,

result.getPropertyCount();

因为这是第一个封面,所以您获得的计数将更少,

然后,打印并查看哪个参数为您提供了核心详细信息,
result.getProperty(0);
result.getProperty(1);
etc ...

找到正确的参数后,然后抓取SoapObject。像这样,
SoapObject result2 = (SoapObject) result.getProperty(0);

然后检查该对象的计数。并执行与上述相同的操作,直到获得正确的SoapObject为止。

找到最后一个SoapObject后,它会像这样打印,没有多余的字符串,
anyType{gnName = Prasad; address = Address of the person; ; workingDays = 5; gnDivision = California; contactNumber = 0123456789}

现在,您可以像这样继续处理此对象,
SoapObject result3 = (SoapObject) result2.getProperty(5);
Log.v("Name : ", result3.getProperty("gnName").toString());

您将在DDMS中获得如下输出,
Name : Prasad

我想这会为您提供帮助,如果您还有其他问题,请告诉我。

关于android - 重新调整complexType对象时,SoapObject Result返回anyType {}作为值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12337137/

10-12 05:10