如何在Android中使用kSOAP序列化自己创建的对象

时间:2013-02-26 14:18:50

标签: android ksoap2 android-ksoap2 ksoap

我正在做一些ksoap请求。一切都很好。但现在我达到了这一点,我必须传递我创建的自定义对象。它被称为“Auftrag”。这只是一个简单的POJO。

尝试通过“request.addProperty”以错误

结束传递它
02-26 14:47:32.995: W/System.err(14095): java.lang.RuntimeException: Cannot serialize: kochtokrax.de.pojo.Auftrag@41a444d8

花了很多时间后我找到了“编组解决方案”。 http://seesharpgears.blogspot.de/2010/11/implementing-ksoap-marshal-interface.html 此示例适用于“doubel”和“Date”类型。可悲的是,这不符合我的目标。 有人可以帮助我在这种情况下如何处理?

以下是我拨打该服务的方式:

  PropertyInfo nos =new PropertyInfo();
  nos.setName("Auftrag");
  nos.setType(AuftragMarshall.class);

    // Use this to add parameters
    request.addProperty("Auftrag", auftrag);
    request.addProperty("DruckerBar", druckerBar);
    request.addProperty("DruckerKueche", druckerKueche);

    // Declare the version of the SOAP request
    SoapSerializationEnvelope envelope = new SoaperializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = false;
    envelope.setOutputSoapObject(request);

    AuftragMarshall marshall = new AuftragMarshall();
    marshall.register(envelope);

2 个答案:

答案 0 :(得分:1)

班级Auftrag必须实施KvmSerializable

您未正确设置nos的值,因此:

PropertyInfo nos = new PropertyInfo();
nos.setName("Auftrag");
nos.setType(AuftragMarshall.class);
nos.setValue(auftragObj);

因为您已将PropertyInfo的类型设置为Auftrag。但稍后您添加DruckerBarDruckerKueche。我想这是不同的课程。这是不正确的。

我像你一样解决类似问题,编组也不适合我。我用自定义映射器解决了它。我首先使用实现KvmSerializable将所需对象映射到类的对象,然后通过Web服务发送它。

答案 1 :(得分:0)