0
我正在編寫一個運行在Apache Tomcat中的Web服務客戶端。我需要獲取請求/響應的XML負載,以便我可以記錄它。是否有可能使用Metro Web服務框架獲取原始XML負載?
將字節轉儲到stdOut並不是我想要的。我想在Java代碼中將其作爲字節來獲取,以便我可以按照我想要的方式記錄它。
有沒有辦法做到這一點?
我正在編寫一個運行在Apache Tomcat中的Web服務客戶端。我需要獲取請求/響應的XML負載,以便我可以記錄它。是否有可能使用Metro Web服務框架獲取原始XML負載?
將字節轉儲到stdOut並不是我想要的。我想在Java代碼中將其作爲字節來獲取,以便我可以按照我想要的方式記錄它。
有沒有辦法做到這一點?
是的,有。這是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不客氣。希望這能解決你的問題。 –