【问题标题】:Getting raw XML response from Java web service client从 Java Web 服务客户端获取原始 XML 响应
【发布时间】:2012-08-15 19:52:22
【问题描述】:

我正在尝试从 Web 服务获取原始 XML 响应,而不是通常的 POJO 集。

我正在使用从 WSDL 和一些模式生成的 Web 服务客户端(因此我可以访问客户端的代码)。客户端是在 RAD 7.5 中生成的,我认为使用 JAX-WS。我一直在查看客户端代码本身,但我什至不确定客户端代码是否曾经处理原始 XML,或者是否将其传递给其他库。

【问题讨论】:

    标签: java web-services jax-ws rad


    【解决方案1】:

    你可以使用

    javax.xml.ws.handler.soap.SOAPHandler<javax.xml.ws.handler.soap.SOAPMessageContext>
    

    您可以简单地使用SOAPMessageContext#getMessage() 获取消息并使用方法将消息转换为字符串

       public static String getXmlMessage(SOAPMessage message) throws Exception
       {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
             message.writeTo(os);
             final String encoding = (String) message.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
             if (encoding == null)
             {
                 return new String(os.toByteArray());
             }
             else
             {
                return new String(os.toByteArray(), encoding);    
             }
       }  
    

    您还可以在此处阅读有关客户端的 SOAP 处理程序
    Article

    【讨论】:

    • 好的,虽然我不确定如何将此字符串返回到我的主应用程序。
    • 我在我的项目中使用这种结构来打印日志中的请求/响应。
    • 您可以创建全局变量ArrayList,并将所有String放入其中
    • 在我的情况下这会有点尴尬。有没有更优雅的方式呢?
    【解决方案2】:

    它没有被广泛记录,但您可以使用Dispatch 接口来实现直接使用 XML 工作的 JAXWS 客户端。 Herehere 是一些入门文章。

    【讨论】:

    • 最后两个链接好像坏了。
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2018-12-02
    • 2012-04-13
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多