2

我是 Web 服务开发的新手。我正在使用 Spring WS 开发 Web 服务。我需要在请求中添加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。

4

2 回答 2

1

我得到了解决方案。我在服务器骨架的 BindingImpl 方法中编写的代码:

MessageContext messageContext = MessageContext.getCurrentContext();

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

header.getChildElements();

它将为您提供 SOAPHeaderElement 列表。从中您可以获取元素名称及其值。

谢谢大家... :)

于 2013-04-23T09:28:27.517 回答
0

嗯,问题是,您使用的是哪个版本的 Spring- WS ?您要添加的标头属于 WS-Addressing 规范,对吗?我知道 Spring-WS 也直接支持 WS-Addressing。最好尽量使用Spring的支持,不要干扰消息头(虽然这也是可以的)。

于 2013-04-22T13:32:02.983 回答