Как получить заголовок Soap на стороне сервера с помощью Spring WS Client

Я новичок в разработке веб-сервисов. Я разрабатываю веб-сервис, используя Spring WS. Мне нужно добавить заголовок мыла в запрос, поэтому ниже приведен мой код для добавления заголовка в запрос на стороне клиента.

 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. Я использую Весну 2.


person Kevin Shah    schedule 18.04.2013    source источник
comment
Взгляните на один из моих предыдущих ответов здесь: stackoverflow.com/a/8562982/956884   -  person evandongen    schedule 18.04.2013


Ответы (2)


Я получил решение. Код, который я написал в методе BindingImpl каркаса сервера:

MessageContext messageContext = MessageContext.getCurrentContext();

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

header.getChildElements();

Это даст вам список SOAPHeaderElement. Отсюда вы можете взять имя элемента и его значение.

Всем спасибо... :)

person Kevin Shah    schedule 23.04.2013

Хм, вопрос в том, какую версию Spring-WS вы используете? Заголовок, который вы хотите добавить, относится к спецификации WS-Addressing, верно? Я знаю, что Spring-WS также напрямую поддерживает WS-адресацию. Лучше максимально использовать поддержку Spring и не вмешиваться в заголовки сообщений (хотя и это тоже возможно).

person rowing-ghoul    schedule 22.04.2013