如何使用Axis2获取请求和响应?

时间:2013-11-06 17:03:42

标签: java soap axis2

我有一个使用Axis2生成的SOAP客户端。它使用JAXB-RI,但这可能无关紧要。

我没有任何XML配置。只需使用Stub生成wsdl2java,准备响应(作为POJO)并在Stub上执行方法。

如何获取此次调用交换的请求和响应的原始XML(作为字符串)?

我想出了service._getServiceClient().getLastOperationContext().getMessageContext("Out").getEnvelope()(以及"In"的类似内容),但其中一个引发了异常,因为该流已经被处理过了。

这听起来非常明显,但不知何故我无法弄清楚如何做到这一点,官方文档令人生畏。但

2 个答案:

答案 0 :(得分:1)

不确定" In"是什么问题消息Lable,

但在搜索时,发现了以下JIRA票 https://issues.apache.org/jira/browse/AXIS2-5469 哪个指向 https://issues.apache.org/jira/browse/AXIS2-5202 并在讨论中找到了一个解决这个问题的西澳大利亚州 使用以下代码,我能够收听soap Request的响应消息。

 stub._getServiceClient().getAxisService().addMessageContextListener(
 new MessageContextListener() {
        public void attachServiceContextEvent(ServiceContext sc,
            MessageContext mc) {}
        public void attachEnvelopeEvent(MessageContext mc) {
            try
            { mc.getEnvelope().cloneOMElement().serialize(System.out); }
            catch (XMLStreamException e) {}
        }
  });

答案 1 :(得分:1)

我遇到了类似的问题,你可以参考下面的代码

1