0

我正在尝试更新我的 Android 应用程序以使用 Ksoap2-Android 版本 3,从版本 2.6 开始,以利用新的 SSL/自签名证书功能。

该应用程序似乎没有问题发送简单的参数和接收复杂的对象。但是,当尝试使用我的请求发送复杂对象时,它以 null 形式到达服务器。

我从来没有在 ksoap 中对复杂类型进行任何编组/解组工作,所以基本上有很多 SoapObjects 和 PropertyInfo 对象在进行,还有很多 .getProperty("propertyname") 等通过层次结构逐步下降。没关系,编写代码有点乏味,但效果很好,所以一切都很好。但是现在当我尝试发送一个复杂对象时,服务器上的请求没有收到任何数据。

我通过创建一个 SoapObject 来组合我的请求对象,然后将更多的 SoapObjects 分配为原始对象的属性,并从它们中分配更多的 SoapObjects,等等,PropertyInfo 对象位于树的末尾。由于某种原因,这在使用 ksoap2 版本 3 时似乎不再起作用。我已经对此进行了测试,唯一的区别是我正在使用的 ksoap 版本。适用于 2.6,不适用于 3.0。

是否有任何已知的原因会发生这种情况?如有必要,我可以在这里发布代码,但我想我会问,以防我遗漏了一些基本的东西。我在 News 或 Coding Tips & Tricks 中没有看到任何内容来说明为什么会发生这种情况。

4

1 回答 1

0

我已经解决了这个问题,但我不确定是什么原因造成的。

我重构了我的代码以使用更新的方法来上传复杂对象,如 Ksoap2-android “编码提示和技巧”页面中所述

似乎在 Ksoap2-Android 的较新版本中,您不能再在树的末尾使用 PropertyInfo 对象嵌套 SoapObjects,这是我之前所做的。在新版本中,顶层只有一个 SoapObject,它具有 PropertyInfo 对象,并且这些 PropertyInfo 对象中的每一个都可以是复杂类型。如何做到这一点在上面的链接中有详细说明。

于 2012-11-02T11:12:17.623 回答