我正在尝试将我的Android应用更新为使用Ksoap2-Android版本3(从2.6版开始),以便利用新的SSL /自签名证书功能。
应用程序似乎没有问题发送简单的参数和接收复杂的对象。但是,当尝试使用我的请求发送复杂对象时,它将作为null到达服务器。
我从来没有在ksoap中使用任何复杂类型的编组/解组来工作,所以基本上有很多SoapObjects和PropertyInfo对象正在进行,很多.getProperty(“propertyname”)等要逐步进入层次结构。这没关系,编码有点乏味但工作得很好,所以这一切都很好。但是现在当我尝试发送一个复杂的对象时,服务器上的请求没有收到任何数据。
我通过创建一个SoapObject来组合我的请求对象,然后将更多SoapObjects作为原始属性的属性,并将更多的SoapObjects分离出来,等等,并在树的末尾使用PropertyInfo对象。由于某些原因,当使用ksoap2版本3时,这似乎不再有效。我测试了这个,唯一的区别是我正在使用的ksoap版本。适用于2.6,而不是3.0。
有没有任何已知原因会发生这种情况?如果有必要,我可以在这里发布代码,但我想如果我遗漏一些基本的东西我会问。我在新闻或编码提示中没有看到任何内容。诀窍说明为什么会发生这种情况。
答案 0 :(得分:0)
我已经解决了这个问题,但我不确定究竟是什么导致了这个问题。
我重构了我的代码,使用更新的方法上传复杂的对象,详见Ksoap2-android“编码提示和技巧”页面here。
似乎在较新版本的Ksoap2-Android中,您不能再在树的末尾使用PropertyInfo对象嵌套SoapObjects,这就是我之前所做的。在新版本中,顶级只有一个SoapObject,它有PropertyInfo对象,每个PropertyInfo对象都可以是复杂类型。如何做到这一点在上面的链接中详细说明。