作为我项目的一部分,我需要使用 ksoap2 访问 Java(Axis) 中的 Web 服务。该网络服务将返回客户对象的向量。我的问题是我无法在 Android 的 Ksoap2 中处理该向量。我尝试了很多方法。不知道该怎么做。我读到了 ksoap2 中的编组。是否需要解决我的问题。如果是这样,我如何在 Ksoap2 中编组一个向量。有人请帮助我.......
问问题
1810 次
2 回答
1
在我的项目中,我手动解析了 ksoap2 答案中的对象,如下所述: //seesharpears.blogspot.com/2010/10/web-service-that-returns-array-of.html
基本上,您将遍历作为答案收到的 SoapObject 并构建您的 Customer 对象。
Category[] categories = new Category[soap.getPropertyCount()];
for (int i = 0; i < categories.length; i++) {
SoapObject pii = (SoapObject)soap.getProperty(i);
Category category = new Category();
category.CategoryId = Integer.parseInt(pii.getProperty(0).toString());
category.Name = pii.getProperty(1).toString();
category.Description = pii.getProperty(2).toString();
categories[i] = category;
}
代码取自seesharpgears,信用在那里。如果您在解析响应时仍然遇到问题,则需要更多详细信息以提供进一步帮助(例如 xml-response ...)
于 2011-05-30T09:29:27.003 回答
1
如果您注册了您想要获取的复杂对象的类(向量的项目),ksoap2 将尝试转换然后为您提供具有注册类的对象的向量,而不是包含 SoapObjects 的向量。为了向 ksoap 注册类,您的类需要实现 KvmSerializable,它允许通过访问属性并分配从 Web 服务检索到的值来反序列化响应中的对象。根据您的班级,您可能还需要注册一些元帅(例如,用于反序列化班级的 int、Double 和 Float 字段)。
注册可以通过以下方式完成:
envelope.addMapping(namespace, typeName, clazz);
其中 namespace id 是类型的命名空间(可以在 wsdl 中找到),typename 是类型的名称(也显示在 wsdl 中),而 clazz 是您要注册的类。
希望这可以帮助!
于 2012-04-08T15:19:55.900 回答