3

How, if possible, do I get the raw XML request/response that is invoked/retrieved by Axis in my application?

I'm using WSDL2Java that is included with Axis to generate the Java stubs.

EDIT:

What I currently have is an app that uses Axis to handle the remote API calls.

One of the requirement is to 'store' all the XML request/response from these calls in the session so that it will be available in the JSP (for debugging purposes). How can I achieve this?

I tried writing a custom handler that extends BasicHandler but in that handler, I still can't get the HttpServletRequest/HttpServletResponse pair from the MessageContext

ryanprayogo
  • 11,587
  • 11
  • 51
  • 66

3 Answers3

14

After a while searching its as simple as this:

//After your _call.invoke(...);

//Request
String request = _call.getMessageContext().getRequestMessage().getSOAPPart().getEnvelope().getBody().toString();

//Response
String response = _call.getMessageContext().getResponseMessage().getSOAPPart().getEnvelope().getBody().toString();

where _call is org.apache.axis.client.Call

Then you can save it in a file where you want...

carlosveucv
  • 819
  • 8
  • 10
0

Why don't you write a server side soap handler, get hold of MessageContext and I believe there is a way to get hold of the payload from there. If you want to pass it to downstream then put it in thread local. See e.g. of handler here

Aravind Yarram
  • 78,777
  • 46
  • 231
  • 327
-1

I end up using the solution described in this question

Basically, I use it to get a hold of the HttpServletRequest and from there I set the proper item in the session.

Community
  • 1
  • 1
ryanprayogo
  • 11,587
  • 11
  • 51
  • 66