I've set up a SOAP WebServiceProvider in JAX-WS, but I'm having trouble figuring out how to get the raw XML from a SOAPMessage (or any Node) object. Here's a sample of the code I've got right now, and where I'm trying to grab the XML:
@WebServiceProvider(wsdlLocation="SoapService.wsdl") @ServiceMode(value=Service.Mode.MESSAGE) public class SoapProvider implements Provider<SOAPMessage> {     public SOAPMessage invoke(SOAPMessage msg)     {         // How do I get the raw XML here?     } }   Is there a simple way to get the XML of the original request? If there's a way to get the raw XML by setting up a different type of Provider (such as Source), I'd be willing to do that, too.
You could try in this way.
SOAPMessage msg = messageContext.getMessage(); ByteArrayOutputStream out = new ByteArrayOutputStream(); msg.writeTo(out); String strMsg = new String(out.toByteArray()); 
                        If you have a SOAPMessage or SOAPMessageContext, you can use a Transformer, by converting it to a Source via DOMSource:
            final SOAPMessage message = messageContext.getMessage();             final StringWriter sw = new StringWriter();              try {                 TransformerFactory.newInstance().newTransformer().transform(                     new DOMSource(message.getSOAPPart()),                     new StreamResult(sw));             } catch (TransformerException e) {                 throw new RuntimeException(e);             }              // Now you have the XML as a String:             System.out.println(sw.toString());   This will take the encoding into account, so your "special characters" won't get mangled.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With