2013-09-30 40 views
0

我正在編寫一個運行在Apache Tomcat中的Web服務客戶端。我需要獲取請求/響應的XML負載,以便我可以記錄它。是否有可能使用Metro Web服務框架獲取原始XML負載?

將字節轉儲到stdOut並不是我想要的。我想在Java代碼中將其作爲字節來獲取,以便我可以按照我想要的方式記錄它。

有沒有辦法做到這一點?

回答

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); 

參考文獻:

+0

感謝Miljen,我會測試和回到這裏在我發現。 –

+0

@JesseBarnum不客氣。希望這能解決你的問題。 –

相關問題