2012-08-15 112 views
1

我試圖從Web服務獲取原始XML響應,而不是通常的POJO集。從Java Web服務客戶機獲取原始XML響應

我正在使用從WSDL和某些模式生成的Web服務客戶端(因此我有權訪問客戶端的代碼)。客戶端在RAD 7.5中生成,我認爲使用JAX-WS。我一直在查看客戶端代碼本身,但我甚至不確定客戶端代碼是否處理過原始XML或者是否將它傳遞給其他庫。

回答

2

可以使用

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

+0

好的,雖然我不知道如何將此字符串返回到我的主應用程序。 – FrustratedWithFormsDesigner 2012-08-17 16:31:03

+0

我在我的項目中使用這種構造來處理日誌中的打印請求/響應。 – Ilya 2012-08-17 20:16:18

+0

你可以創建全局變量ArrayList,並把所有的字符串給它 – Ilya 2012-08-17 20:16:56

1

它沒有被廣泛記載,但是您可以使用Dispatch接口來實現直接與XML一起工作的JAXWS客戶端。 Herehere是一些入門文章。