2

我正在做一些 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);
4

2 回答 2

1

Auftrag必须实现KvmSerializable

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

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

因为您已将 type of 设置PropertyInfoAuftrag。但后来你添加DruckerBarand DruckerKueche。我想这是不同的课程。这是不正确的。

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

于 2013-02-27T15:55:51.373 回答
0

我建议您查看将复杂对象数组添加到请求中。

于 2013-03-02T10:16:43.003 回答