在会话中存储Axis原始XML请求/响应(将在JSP中使用)

时间:2011-04-27 19:59:50

标签: java xml wsdl axis wsdl2java

如果可能,我如何获取Axis在我的应用程序中调用/检索的原始XML请求/响应?

我正在使用Axis附带的WSDL2Java来生成Java存根。

修改

我目前拥有的应用程序使用Axis来处理远程API调用。

其中一个要求是在会话中“存储”来自这些调用的所有XML请求/响应,以便它在JSP中可用(用于调试目的)。我怎样才能做到这一点?

我尝试编写extends BasicHandler的自定义处理程序,但在该处理程序中,我仍然无法从HttpServletRequest

获取HttpServletResponse / MessageContext

3 个答案:

答案 0 :(得分:14)

经过一段时间的搜索,就像这样简单:

// _call.invoke(...);

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

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

其中_call是org.apache.axis.client.Call

然后你可以将它保存在你想要的文件中......

答案 1 :(得分:0)

为什么不编写服务器端的soap处理程序,获取MessageContext,我相信有一种方法可以从那里获取有效负载。如果要将其传递给下游,则将其放在本地线程中。参见例如处理程序here

答案 2 :(得分:-1)

我最终使用了此question

中描述的解决方案

基本上,我用它来获取HttpServletRequest,并从那里我在会话中设置了正确的项目。