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



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

我使用Axis包含的WSDL2Java来生成Java存根。

编辑:

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

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

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

获得HttpServletRequest/HttpServletResponse

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

//在_call.invoke(…)之后

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

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

然后你可以把它保存在你想要的文件中…

为什么不写一个服务器端soap处理程序,获取MessageContext,我相信有一种方法可以从那里获取有效负载。如果你想把它传递给下游,那么把它放在线程本地。例如:

我最终使用了这个问题中描述的解决方案

基本上,我用它来获得HttpServletRequest,并从那里我在会话中设置适当的项。

最新更新