是否可以使用Metro Web服务框架获取原始XML有效负载



我正在编写一个在Apache Tomcat中运行的Web服务客户端。我需要获取请求/响应的 XML 有效负载,以便我可以记录它。

将字节转储到 stdOut 不是我想要的。我想在我的 Java 代码中以字节的形式获取它,以便我可以按照我想要的方式记录它。

有什么办法可以做到这一点吗?

是的,有。它是 JAX-WS 处理程序的主要目的之一。您不会获得原始字节形式的 XML 有效负载,而是格式化的;但是,如果需要,很容易再次将其转换为原始字节。举个例子:

public class MyCustomHandler implements SOAPHandler<SOAPMessageContext> {
    @Override
    public boolean handleMessage(SOAPMessageContext context) {
        SOAPMessage msg = context.getMessage();
        SOAPEnvelope env = msg.getSOAPPart().getEnvelope();
        SOAPBody body = env.getBody(); 
        // now when you have SOAP body you can do whatever you want...
        return true;
    }
}

您还可以使用此调用:

JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Object payload = msg.getPayload(jaxbContext);

引用:

  • JAX-WS:服务器端的 SOAP 处理程序
  • 将 JAX-WS 处理程序添加到 Web 服务和 SOAP 客户机

最新更新