javaweb-servicesjax-wsrad

Getting raw XML response from Java web service client


I am trying to get the raw XML response from a web service, instead of the usual set of POJOs.

I am using a webservice client that I generated (so I have access to the client's code) from a WSDL and some schemas. The client is generated in RAD 7.5, I think using JAX-WS. I've been looking at the client code itself, but I'm not even sure if the client code ever handles raw XML or if it passes it off to other libraries.


Solution

  • You can do it using

    javax.xml.ws.handler.soap.SOAPHandler<javax.xml.ws.handler.soap.SOAPMessageContext>
    

    you can simply get message using SOAPMessageContext#getMessage() and convert message to String using method

       public static String getXmlMessage(SOAPMessage message) throws Exception
       {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
             message.writeTo(os);
             final String encoding = (String) message.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
             if (encoding == null)
             {
                 return new String(os.toByteArray());
             }
             else
             {
                return new String(os.toByteArray(), encoding);    
             }
       }  
    

    Also you can read here about SOAP handler on client side
    Article