Blackberry KSOAP中发送复杂参数的问题

Blackberry KSOAP中发送复杂参数的问题,blackberry,ksoap2,Blackberry,Ksoap2,在通过wsdl发送复杂的类参数时,我遇到了一个异常 在我的回复中,我得到了以下日志: Exception: SoapFault - faultcode: 'S:Server' faultstring: 'javax.xml.bind.UnmarshalException - with linked exception:[javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,471]Message: Element type

在通过wsdl发送复杂的类参数时,我遇到了一个异常

在我的回复中,我得到了以下日志:

Exception: SoapFault - faultcode: 'S:Server' faultstring: 'javax.xml.bind.UnmarshalException - with linked exception:[javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,471]Message: Element type "systemGenerated" must be followed by either attribute specifications, ">" or "/>".]' faultactor: 'null' detail: org.kxml2.kdom.Node@f4fb007fRequest:::::::::::::::::::::::::::::::::::0Access00000000 BuyLimitLimit02233.000000001000.00.00.0 Response>>>>>>>in exceptionnnn>>>>>>>>>>S:Serverjavax.xml.bind.UnmarshalException - with linked exception:[javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,471]Message: Element type "systemGenerated" must be followed by either attribute specifications, ">" or "/>".]javax.xml.bind.UnmarshalException - with linked exception:
我认为您确实应该在rpc.addProperty行中发送属性“pi”和类实例“mt”[确保对象不为null。即设置值]。这样,

rpc.addProperty(pi,mt)

我通常是这样做的:



    String CLASS_NAME = "Complex object class name"; // set this according to your wsdl complex object name
    PropertyInfo pi = new PropertyInfo();
    pi.name = (CLASS_NAME);
    pi.type = mt.getClass(); // class instance used with get class
    request.addProperty(pi, mt); // add the property


    // finally add mapping
    final SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    env.addMapping(NAMESPACE, CLASS_NAME, new MTradeOrder().getClass());

看看这里,它可能会有帮助:



    String CLASS_NAME = "Complex object class name"; // set this according to your wsdl complex object name
    PropertyInfo pi = new PropertyInfo();
    pi.name = (CLASS_NAME);
    pi.type = mt.getClass(); // class instance used with get class
    request.addProperty(pi, mt); // add the property


    // finally add mapping
    final SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    env.addMapping(NAMESPACE, CLASS_NAME, new MTradeOrder().getClass());