В настоящее время я разрабатываю Java-приложение, которое обрабатывает веб-сервис SOAP.Использование сложных типов данных из Java в Axis webservice
Проблема заключается в том, что я разбираю WSDL [Parser объект от Apache Axis делает это для меня], и я создаю вызов.
Когда я пытаюсь вызвать его, я должен передать объект [], чтобы назначить параметры [взятые из действия WSDL]. Нормальное действие легко, но когда у меня есть пользовательские типы данных, я не могу заставить его заполнить его для меня. Я пытаюсь передать Object [] {new Object {}}, но вместо этого назначает первое поле. Я не могу передать его уже обработанным, потому что он меняет '<>' на '--lt --gt', и сервер его не распознает '.
Это фрагмент WSDL.
<s:element name="FERecuperaQTYRequest"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="argAuth" type="tns:FEAuthRequest" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="FEAuthRequest"> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Token" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="Sign" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="cuit" type="s:long" /> </s:sequence> </s:complexType>
И это хлопотно Java Фрагмент
QTY = (String) call.invoke (
new Object[]{
new Object[]{
tokenConexion.getToken(),
tokenConexion.getSign(),
tokenConexion.getCUIT()
}
});
До сих пор я думаю, что решение может лежать на сериализации, но я продолжаю сталкиваться с «NoSerializerFound», даже когда я реализую io.Serializable. Кто-нибудь знает, могу ли я переопределить метод, чтобы рассказать ему, как его сериализовать? UPDATE: мне может потребоваться реализовать вместо этого несколько объектов из org.apache.axis.encoding.ser. Кто угодно? – 2008-10-31 18:02:10
, как определено в Java API для интерфейса Serializable, вы можете переопределить способ его сериализации путем реализации частных функций writeObject (java.io.ObjectOutputStream) и readObject (java.io.ObjectInputStream) – Vinze 2008-12-17 15:50:16