Getting raw XML response from Java web service client
Asked Answered
C

2

4

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.

Cataplexy answered 15/8, 2012 at 19:52 Comment(0)
T
3

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

Transfinite answered 15/8, 2012 at 20:26 Comment(4)
Ok, though I'm not sure how I can return this string back to my main application.Cataplexy
I am using this construction in my project for print request/response in logs.Transfinite
You can create global variable ArrayList, and put all String to itTransfinite
That's going to be a little awkward in my situation. Is there a more graceful way of doing it?Cataplexy
R
2

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.

Rocket answered 15/8, 2012 at 20:13 Comment(1)
Two last links like broken.Demagogue

© 2022 - 2024 — McMap. All rights reserved.