Team, Am using latest CVS. When i call message.getSOAPPart().getAsString(), am getting bad XML back. See output below. The problem seems to be that the recorder in SOAPEnvelope still has stuff in it that it wants to play back. When i call message.getSOAPEnvelope().setRecorder(null); all's well. See enclosed sample to recreate the problem.
Thanks, dims =============== <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd-cr="http://www.w3.org/2000/10/XMLSchema" xmlns:xsd-lc="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ser-root:SrvResponse xmlns:ser-root="urn:test.encoding"> <ser-root:RETURN xsi:type="ser-root:RETURN"> <TYPE xsi:type="xsd:string">000</TYPE> <ID xsi:type="xsd:string">001</ID> <NUMBER xsi:type="xsd:string">002</NUMBER> <MESSAGE xsi:type="xsd:string">003</MESSAGE> <LOG_NO xsi:type="xsd:string">004</LOG_NO> <LOG_MSG_NO xsi:type="xsd:string">005</LOG_MSG_NO> <MESSAGE_V1 xsi:type="xsd:string">006</MESSAGE_V1> <MESSAGE_V2 xsi:type="xsd:string">007</MESSAGE_V2> <MESSAGE_V3 xsi:type="xsd:string">008</MESSAGE_V3> <MESSAGE_V4 xsi:type="xsd:string">009</MESSAGE_V4> </ser-root:RETURN> </ser-root:SrvResponse></SOAP-ENV:Body> </SOAP-ENV:Envelope><ser-root:SrvResponse xmlns:ser-root="urn:test.encoding"> <ser-root:RETURN xsi:type="ser-root:RETURN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <TYPE xsi:type="xsd:string">000</TYPE> <ID xsi:type="xsd:string">001</ID> <NUMBER xsi:type="xsd:string">002</NUMBER> <MESSAGE xsi:type="xsd:string">003</MESSAGE> <LOG_NO xsi:type="xsd:string">004</LOG_NO> <LOG_MSG_NO xsi:type="xsd:string">005</LOG_MSG_NO> <MESSAGE_V1 xsi:type="xsd:string">006</MESSAGE_V1> <MESSAGE_V2 xsi:type="xsd:string">007</MESSAGE_V2> <MESSAGE_V3 xsi:type="xsd:string">008</MESSAGE_V3> <MESSAGE_V4 xsi:type="xsd:string">009</MESSAGE_V4> </ser-root:RETURN> </ser-root:SrvResponse> =============== ===== Davanum Srinivas - http://xml.apache.org/~dims/ __________________________________________________ Do You Yahoo!? Yahoo! Movies - coverage of the 74th Academy Awards® http://movies.yahoo.com/
package test.encoding; import org.apache.axis.Constants; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.encoding.TypeMapping; import org.apache.axis.encoding.TypeMappingRegistry; import org.apache.axis.message.RPCElement; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.server.AxisServer; import javax.xml.rpc.namespace.QName; import java.util.Vector; /** * Test deserialization of SOAP responses */ public class TestOutput { private static AxisServer server = new AxisServer(); private static String header = "<?xml version=\"1.0\"?>\n" + "<SOAP-ENV:Envelope\n" + "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" + "xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\"\n" + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" + "xmlns:xsd-cr=\"http://www.w3.org/2000/10/XMLSchema\"\n" + "xmlns:xsd-lc=\"http://www.w3.org/1999/XMLSchema\"\n" + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n" + "<SOAP-ENV:Body>\n"; private static String footer = "</SOAP-ENV:Body>\n" + "</SOAP-ENV:Envelope>\n"; private static String response = "<ser-root:SrvResponse xmlns:ser-root=\"urn:test.encoding\">\n" + " <ser-root:RETURN xsi:type=\"ser-root:RETURN\">\n" + " <TYPE xsi:type=\"xsd:string\">000</TYPE>\n" + " <ID xsi:type=\"xsd:string\">001</ID>\n" + " <NUMBER xsi:type=\"xsd:string\">002</NUMBER>\n" + " <MESSAGE xsi:type=\"xsd:string\">003</MESSAGE>\n" + " <LOG_NO xsi:type=\"xsd:string\">004</LOG_NO>\n" + " <LOG_MSG_NO xsi:type=\"xsd:string\">005</LOG_MSG_NO>\n" + " <MESSAGE_V1 xsi:type=\"xsd:string\">006</MESSAGE_V1>\n" + " <MESSAGE_V2 xsi:type=\"xsd:string\">007</MESSAGE_V2>\n" + " <MESSAGE_V3 xsi:type=\"xsd:string\">008</MESSAGE_V3>\n" + " <MESSAGE_V4 xsi:type=\"xsd:string\">009</MESSAGE_V4>\n" + " </ser-root:RETURN>\n" + "</ser-root:SrvResponse>"; public static void main(String[] args) throws Exception { TypeMappingRegistry tmr = server.getTypeMappingRegistry(); TypeMapping tm = (TypeMapping) tmr.createTypeMapping(); tm.setSupportedNamespaces(new String[]{Constants.URI_CURRENT_SOAP_ENC}); tmr.register(Constants.URI_CURRENT_SOAP_ENC, tm); tm.register(test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN"), new org.apache.axis.encoding.ser.BeanSerializerFactory( test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN")), new org.apache.axis.encoding.ser.BeanDeserializerFactory( test.encoding.RETURN.class, new QName("urn:test.encoding", "RETURN"))); Message message = new Message(header + response + footer); message.setMessageContext(new MessageContext(server)); SOAPEnvelope envelope = (SOAPEnvelope) message.getSOAPPart().getAsSOAPEnvelope(); RPCElement body = (RPCElement) envelope.getFirstBody(); Vector arglist = body.getParams(); //message.getSOAPEnvelope().setRecorder(null); String xml = message.getSOAPPart().getAsString(); System.out.println("==============="); System.out.println(xml); System.out.println("==============="); } }