我正在做一些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);
答案 0 :(得分:1)
班级Auftrag
必须实施KvmSerializable
。
您未正确设置nos
的值,因此:
PropertyInfo nos = new PropertyInfo();
nos.setName("Auftrag");
nos.setType(AuftragMarshall.class);
nos.setValue(auftragObj);
因为您已将PropertyInfo
的类型设置为Auftrag
。但稍后您添加DruckerBar
和DruckerKueche
。我想这是不同的课程。这是不正确的。
我像你一样解决类似问题,编组也不适合我。我用自定义映射器解决了它。我首先使用实现KvmSerializable
将所需对象映射到类的对象,然后通过Web服务发送它。
答案 1 :(得分:0)