I'm trying to figure out why Axis throws a SAXException trying to deserialize the following SOAP message containing a fault:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/1999/XMLSchema";>
<SOAP-ENV:Body>
<ns1:SomeFunction xmlns:ns1="urn:foo">
<Param1 xsi:type="xsd:string">some value</Param1>
<Param2 xsi:type="xsd:string">some value</Param2>
<SOAP-ENV:Fault>
<faultcode xsi:type="xsd:string">Client</faultcode>
<faultstring xsi:type="xsd:string">Client request/data invalid</faultstring>
<detail>
<message xsi:type="xsd:string">some message</message>
<errorcode xsi:type="xsd:string">-5</errorcode>
</detail>
</SOAP-ENV:Fault>
</ns1:SomeFunction>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


The code I'm using:

Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setSOAPActionURI("SomeAction"); call.setOperationName(new QName("urn:foo", "SomeFunction"));
call.addParameter("Param1", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter("Param2", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
String result = (String)call.invoke( new Object[] { "value1", "value2" } );


The exception stack trace that results:

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:149)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1025)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:159)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1138)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:308)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:342)
at org.apache.axis.client.Call.invoke(Call.java:2420)
at org.apache.axis.client.Call.invoke(Call.java:2319)
at org.apache.axis.client.Call.invoke(Call.java:1776)
remote exception=org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.





Reply via email to