【问题标题】:Store Axis raw XML request/response in session (to be used in JSP)在会话中存储 Axis 原始 XML 请求/响应(在 JSP 中使用)
【发布时间】:2011-08-14 04:00:59
【问题描述】:

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

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

编辑:

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

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

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

【问题讨论】:

    标签: java xml wsdl axis wsdl2java


    【解决方案1】:

    搜索一下就这么简单:

    //在你的_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

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

    【讨论】:

      【解决方案2】:

      我最终使用了question中描述的解决方案

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 应用程序使用服务器提供的 API。为什么要编写服务器端处理程序?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        相关资源
        最近更新 更多