2013-04-18 43 views
2

我是Web服務開發新手。我正在使用Spring WS開發Web服務。我需要在請求中添加肥皂頭,所以下面是我的代碼,在客戶端請求添加頭。如何使用Spring WS客戶端在服務器端獲得SOAP頭

getWebServiceTemplate() 
       .sendSourceAndReceiveToResult(source, 
        new WebServiceMessageCallback(){ 
         public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException{ 
          SaajSoapMessage soapMessage = (SaajSoapMessage) message; 
          SoapHeaderElement messageId = soapMessage.getSoapHeader().addHeaderElement(new QName("http://www.w3.org/2005/08/addressing", "messageId", "wsa")); 
          messageId.setText("Test Security Token"); 
         } 
       },result); 

如何從服務器端類的請求中獲取此標頭?

我已經使用Eclipse Axis插件來生成我的wsdl類框架。我正在使用Spring 2.

+0

看看我以前的一個答案在這裏:http://stackoverflow.com/a/8562982/956884 – evandongen 2013-04-18 13:57:07

回答

0

嗯,問題是,哪個版本的Spring- WS您使用的是?您要添加的標題屬於WS-Addressing規範,對不對?我知道Spring-WS也直接支持WS-Addressing。儘可能多地使用Spring的支持,而不是干擾消息頭(儘管這也是可能的)。

1

我得到了解決方案。我已經寫在服務器骨架BindingImpl的方法代碼:

MessageContext messageContext = MessageContext.getCurrentContext(); 

SOAPHeader header = (SOAPHeader) 
    messageContext.getCurrentMessage().getSOAPHeader(); 

header.getChildElements(); 

它會給你的SOAPHeaderElement的名單。從中你可以獲得元素名稱和價值。

謝謝大家... :)