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("===============");
    }
}

Reply via email to