0

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

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

有没有办法做到这一点?

4

1 回答 1

1

就在这里。它是 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);

参考:

于 2013-10-10T13:19:06.873 回答