【问题标题】:Is it possible to get the raw XML payload using Metro web services framework?是否可以使用 Metro Web 服务框架获取原始 XML 负载?
【发布时间】:2013-09-30 19:22:52
【问题描述】:

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

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

有什么办法吗?

【问题讨论】:

    标签: xml tomcat logging java-metro-framework


    【解决方案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);
    

    参考资料:

    【讨论】:

    • 谢谢 Miljen,我会测试并在此处发布我发现的内容。
    • @JesseBarnum 欢迎您。希望这能解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多