如果可能,我如何获取Axis在我的应用程序中调用/检索的原始XML请求/响应?
我正在使用Axis附带的WSDL2Java来生成Java存根。
修改
我目前拥有的应用程序使用Axis来处理远程API调用。
其中一个要求是在会话中“存储”来自这些调用的所有XML请求/响应,以便它在JSP中可用(用于调试目的)。我怎样才能做到这一点?
我尝试编写extends BasicHandler
的自定义处理程序,但在该处理程序中,我仍然无法从HttpServletRequest
HttpServletResponse
/ MessageContext
对
答案 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,并从那里我在会话中设置了正确的项目。