我在我的 Android 应用程序中调用 Web 服务,方法是 getGramaNiladhariData(), 我得到的结果是 SoapObject。
result = (SoapObject) envelope.bodyIn; Log.d("WS", String.valueOf(result));
这就是我得到的 String.valueOf(result)
getGramaNiladhariDataResponse{getGramaNiladhariDataResult=anyType{gnName=anyType{};地址=任何类型{}; workingDays=anyType{}; gnDivision=任何类型{}; contactNumber=anyType{}; };
这里我调用的方法返回一个 complexType 对象,由 5 个属性组成。 正如我在 Internet 上发现的那样,由于返回 complexType 对象的 Web 服务方法,我无法获得 soap 对象。如果是这样,我应该如何获取这些值。
我想解决的是为什么我得到 anyType{} 作为值,而不是实际值。 任何帮助将不胜感激
最佳答案
来不及回答。但仅供引用和其他认为这很有用的人,
通过执行 String.valueOf(result)
,您将打印正文的全部内容。但是为了使用参数获取您的值,首先您需要输入以更正 SoapObject
。
我不知道是否有任何简单的方法可以找到正确的 SoapObject
,但仍然可以通过这种方式找到正确的 SoapObject
然后你完成。在下面找到如何找到正确的 SoapObject
,
首先,您需要检查第一个 SoapObject
中的参数数量,
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 - SoapObject 结果在重新调整 complexType 对象时返回 anyType{} 作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337137/