如何解决在Android中使用Ksoap2处理向量
| 作为项目的一部分,我需要使用ksoap2访问Java(Axis)中的Web服务。 该Web服务将返回一个Customer对象的向量。我的问题是我无法处理该问题 Android中Ksoap2中的向量。我尝试了很多方法。没有得到该怎么做。我读到有关在ksoap2中编组的信息。是解决我的问题所需要的吗?如果是的话,如何在Ksoap2中封送一个Vector?有人请帮助我.......解决方法
在我的项目中,我从ksoap2答案中手动解析了对象,如下所示:
http://seesharpgears.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 ...)
, 如果注册要获取的复杂对象的类(向量的项),则ksoap2将尝试进行转换,然后为您提供带有已注册类对象的向量,而不是包含SoapObjects的向量。
为了使用ksoap注册该类,您的类必须实现KvmSerializable,该类允许通过访问属性并分配从Web服务获取的值来反序列化响应中的对象。依赖于您的班级,您可能还需要注册一些元帅(例如,对您班级的int,Double和Float字段进行反序列化)。
可以通过以下方式完成注册:
envelope.addMapping(namespace,typeName,clazz);
其中名称空间ID是类型的名称空间(可以在wsdl中找到),类型名称是类型的名称(也在wsdl中显示),而clazz是要注册的类。
希望这可以帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。