重新调整complexType对象时,SoapObject Result将anyType {}作为值返回

era*_*ndi 6 android android-ksoap2

我打电话在我的Android应用程序的网络服务和方法是getGramaNiladhariData(),我得到的结果作为SoapObject.

result = (SoapObject) envelope.bodyIn;  Log.d("WS", String.valueOf(result));
Run Code Online (Sandbox Code Playgroud)

这就是我得到的 String.valueOf(结果)

getGramaNiladhariDataResponse {getGramaNiladhariDataResult = anyType的{gnName = anyType的{}; 地址= anyType的{}; workingDays = anyType的{}; gnDivision = anyType的{}; contactNumber = anyType的{}; }; }

这里我调用的方法返回一个complexType对象,由5个属性组成.正如我在互联网上发现的那样,我无法获得soap对象作为返回complexType对象的webservice方法的结果.如果是这样,我应该如何获取值.

我想要解决的是为什么我得到anyType {},作为值,而不是实际值.任何帮助,将不胜感激

Pra*_*ysa 5

回答太晚了.但是FYI和其他发现这个有用的人,

通过做String.valueOf(result)你正在打印身体的全部内容.但为了使用参数获取您的值,首先您需要点击才能更正SoapObject.

我不知道是否有任何简单的方法可以找到正确的方法SoapObject,但仍然可以这样做,一旦你得到了正确的SoapObject话,你就完成了.在下面找到如何找到正确的SoapObject,

首先,你需要先检查一下params的数量SoapObject,

result.getPropertyCount();
Run Code Online (Sandbox Code Playgroud)

你会得到更少的数量,因为这是第一个封面,

然后,打印并查看哪个参数为您提供了核心信息,

result.getProperty(0);
result.getProperty(1);
etc ...
Run Code Online (Sandbox Code Playgroud)

找到正确的参数后,抓住它SoapObject.像这样,

SoapObject result2 = (SoapObject) result.getProperty(0);
Run Code Online (Sandbox Code Playgroud)

然后检查这个对象的计数.并且做到与上面相同,直到你得到正确的SoapObject.

一旦找到最后一个SoapObject,就会打印出这样没有无用的字符串,

anyType{gnName = Prasad; address = Address of the person; ; workingDays = 5; gnDivision = California; contactNumber = 0123456789}
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样继续使用这个对象,

SoapObject result3 = (SoapObject) result2.getProperty(5);
Log.v("Name : ", result3.getProperty("gnName").toString());
Run Code Online (Sandbox Code Playgroud)

您将获得DDMS中的输出,如下所示,

Name : Prasad
Run Code Online (Sandbox Code Playgroud)

我想这会对你有帮助,如果你有任何进一步的问题,请告诉我.