我目前正在開發處理SOAP web服務的Java應用程序。在Axis中使用Java中的複雜數據類型webservice
問題在於我解析WSDL [Parser對象來自Apache Axis爲我做的事],並創建了調用。
當我嘗試調用它時,我必須傳遞一個Object []來分配參數[取自WSDL的Action]。正常的操作很簡單,但是當我有自定義數據類型時,我無法爲它填充。我嘗試傳遞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()
}
});
到目前爲止,我認爲解決方案可能在於序列化,但即使在實現io.Serializable時,我仍然遇到'NoSerializerFound'。有誰知道我是否可以重寫一個方法來告訴它如何序列化它?更新:我可能不得不從org.apache.axis.encoding.ser實現一些對象。任何人? – 2008-10-31 18:02:10
在Serializable接口的Java API中定義,您可以通過實現私有函數writeObject(java.io.ObjectOutputStream)和readObject(java.io.ObjectInputStream)來覆蓋它的序列化方式 – Vinze 2008-12-17 15:50:16