我是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.
答案 0 :(得分:1)
我得到了解决方案。我在服务器骨架的BindingImpl方法中编写的代码:
MessageContext messageContext = MessageContext.getCurrentContext();
SOAPHeader header = (SOAPHeader)
messageContext.getCurrentMessage().getSOAPHeader();
header.getChildElements();
它将为您提供SOAPHeaderElement列表。从那里你可以获取元素名称及其价值。
谢谢大家...... :)
答案 1 :(得分:0)
嗯,问题是,你使用的是哪个版本的Spring- WS ?您要添加的标头属于WS-Addressing规范,对吧?我知道Spring-WS也直接支持WS-Addressing。最好尽可能使用Spring的支持,而不是干扰消息头(虽然这也是可能的)。