You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Davanum Srinivas <di...@yahoo.com> on 2002/03/21 12:57:16 UTC

Problem trying to get SOAPEnvelope as String.

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/

Re: Problem trying to get SOAPEnvelope as String.

Posted by Davanum Srinivas <di...@yahoo.com>.
Oops, forgot to mention you will also need test.encoding.RETURN in your classpath...

Thanks,
dims

--- Davanum Srinivas <di...@yahoo.com> wrote:
> 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("===============");
>     }
> }
> 


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards�
http://movies.yahoo.com/