Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 446
FrustratedWithFormsDesigner Avatar asked Oct 28 '25 03:10

FrustratedWithFormsDesigner


2 Answers

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

like image 119
Ilya Avatar answered Oct 29 '25 20:10

Ilya


It's not widely documented, but you can use the Dispatch interface to implement JAXWS clients which work directly w/ the XML. Here and here are some articles for getting started.

like image 41
jtahlborn Avatar answered Oct 29 '25 19:10

jtahlborn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!