2011-03-17 77 views
0

作为我项目的一部分,我需要使用kso​​ap2访问Java(Axis)中的Web服务。 该Web服务将返回一个矢量客户objects.My问题是我无法处理Android中的Ksoap2中的那个 矢量。我尝试了很多方法。没有得到如何做到这一点。我读过有关ksoap2的编组。是否需要解决我的问题。如果是这样,我怎样才能在Ksoap2中编组Vector。有人请帮我.......在Android中使用Ksoap2处理矢量

回答

1

在我的项目,我手动解析从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 ...)

1

如果你注册了你想获得的复杂对象的类的向量),ksoap2将尝试转换,然后为您提供注册类的对象而不是包含SoapObjects的向量。 对于使用kso​​ap注册类,必须让您的类实现KvmSerializable,该类允许通过访问属性并分配从Web服务检索到的值来反序列化响应中的对象。在你的课堂上,你可能还需要注册一些元帅(例如反序列化班级的int,Double和Float字段)。

登记可以这样做:

envelope.addMapping(namespace, typeName, clazz); 

当命名空间ID的类型的命名空间(如可在WSDL中找到),类型名称是该类型的名称(也在WSDL中所示)和clazz是你想要注册的类。

希望这会有所帮助!