从Java Web服务客户端获取原始XML响应

4

我想获取一个 Web 服务的原始 XML 响应,而不是通常的 POJO 集合。

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

2个回答

3

您可以使用以下方法实现:

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处理程序的信息。
文章


好的,虽然我不确定如何将这个字符串返回给我的主应用程序。 - FrustratedWithFormsDesigner
我在我的项目中使用这个结构来打印请求/响应日志。 - Ilya
你可以创建全局变量ArrayList,并将所有的字符串放入其中。 - Ilya
2
在我的情况下,这可能有点尴尬。有没有更优雅的方法来解决它? - FrustratedWithFormsDesigner

2

虽然没有广泛的文档记录,但您可以使用Dispatch接口来实现直接与XML交互的JAXWS客户端。这里这里是一些入门文章。


最后两个链接好像失效了。 - abel.matos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接