2012-01-16 53 views
1

我有一個使用軸的Web服務客戶端。它使用文檔/文字風格,應該有無效響應但是在服務器上發送頭響應SOAP體的內部如下沒有類型的Apache Axis響應

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Code> 
      <SOAP-ENV:Value>HTTP/1.1 200 OK</SOAP-ENV:Value> 
     </SOAP-ENV:Code> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

當然,客戶端是提高解串器例外堅持如下

AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. 
    at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:145) 
    at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) 
    at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) 
    at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) 
    at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) 
    at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) 
    at org.apache.axis.client.Call.invoke(Call.java:2467) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 

有沒有辦法繞過這個異常,而不是使用invokeOneWay函數(這不是我想的好辦法)?

回答

1

通過將輸出消息添加到服務來解決它。

<xsd:element name="Code" type="codeDT" /> 
<xsd:complexType name="codeDT"> 
    <xsd:sequence> 
     <xsd:any /> 
    </xsd:sequence> 
</xsd:complexType> 
... 
<wsdl:message name="Code"> 
    <wsdl:documentation /> 
    <wsdl:part name="Code" element="p1:Code" /> 
</wsdl:message> 

只是將返回類型AXIS_VOID更改爲SOAP_ELEMENT內存根工作正常,但哦;這樣,即使我不需要它,我也可以獲得價值標籤內的內容。

相關問題