Search code examples
javasoapjax-ws

Find exact soap request and response xml created


How can I find the exact soap request and response generated. Here is the sample code I am using:

@WebService(targetNamespace = "", name = "")
@XmlSeeAlso({ObjectFactory.class})
public interface ServiceSoap {

    @WebMethod(action = "")
    @RequestWrapper(localName = "", targetNamespace = "", className = "")
    @ResponseWrapper(localName = "", targetNamespace = "", className = "")
    @WebResult(name = "", targetNamespace = "")

    public ResponseType sampleRequest(@WebParam(name = "", targetNamespace = "")java.lang.String str);

    }

This is invoked by the following code snippet

ResponseType response = serviceSoap.sampleRequest(str);

I want to find what is the exact soap request/response generated.


Solution

  • If you are using Apache CXF you can use the classes LoggingOutInterceptor and LoggingInInterceptor:

    StringWriter soapMessageWriter=new StringWriter();
    LoggingOutInterceptor loi=new LoggingOutInterceptor(new PrintWriter(soapMessageWriter));
    loi.setPrettyLogging(true);
    ClientProxy.getClient(serviceSoap).getOutInterceptors().add(loi);
    LoggingInInterceptor lii=new LoggingInInterceptor(new PrintWriter(soapMessageWriter));
    lii.setPrettyLogging(true);
    ClientProxy.getClient(serviceSoap).getInInterceptors().add(lii);
    
    
    //do your stuff
    
    String soapContent=soapMessageWriter.getString();