序列化要使用KSOAP2发送的整数数组


问题内容

我在尝试将int数组发送到.NET Web服务时遇到问题,该服务期望参数之一为数组。至少从我从Web服务上的API描述中了解到的内容可以看出:

<dataIndexIDs>
<int>int</int>
<int>int</int> </dataIndexIDs>

因此,当我像下面那样发送单个int时,我没有收到任何错误,并且我认为它可以正常工作。

request.addProperty("dataIndexIDs", 63);

但是当我尝试发送一个整数数组时:

request.addProperty("dataIndexIDs", new int[] {63, 62}); // array of ints

或整数的ArrayList:

ArrayList<Integer> indexes = new ArrayList<Integer>();
    indexes.add(63);
    indexes.add(62);
    request.addProperty("dataIndexIDs", indexes); // ArrayList of Integers

我抛出“ java.lang.RuntimeException:无法序列化”异常。有什么帮助吗?我究竟做错了什么?谢谢!


问题答案:

这是KSOAP2 for Android库的一个已知问题,该库目前根本不支持数组。问题描述在这里:

http://code.google.com/p/ksoap2-android/issues/detail?id=19

可以在此处找到第三方补丁,解决方案和示例:

http://people.unica.it/bart/ksoap2-patch/

我个人没有测试它们,因为它们还需要更改Web服务WSDL,但显然它们可以解决该问题。