我有一个使用Axis2生成的SOAP客户端。它使用JAXB-RI,但这可能无关紧要。
我没有任何XML配置。只需使用Stub
生成wsdl2java
,准备响应(作为POJO)并在Stub
上执行方法。
如何获取此次调用交换的请求和响应的原始XML(作为字符串)?
我想出了service._getServiceClient().getLastOperationContext().getMessageContext("Out").getEnvelope()
(以及"In"
的类似内容),但其中一个引发了异常,因为该流已经被处理过了。
这听起来非常明显,但不知何故我无法弄清楚如何做到这一点,官方文档令人生畏。但
答案 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