如何将 SOAP header 添加到 Spring Jax-WS 客户端?
具体来说,我有一个 Jaxb 对象,我想将其添加到标题中,但不胜感激 xml 示例。
我正在使用 Spring 的 JaxWsPortProxyFactoryBean 描述 here .另外,我正在生成我的客户,如 here 所述。这减少了我需要添加的标题。
谢谢。
最佳答案
更优雅一点(仍然需要类转换):
public void doWithMessage(WebServiceMessage message) {
try {
SOAPMessage soapMessage = ((SaajSoapMessage)message).getSaajMessage();
SOAPHeader header = soapMessage.getSOAPHeader();
SOAPHeaderElement security = header.addHeaderElement(new QName("http://schemas.xmlsoap.org/ws/2003/06/secext", "Security", "wsse"));
SOAPElement usernameToken = security.addChildElement("UsernameToken", "wsse");
SOAPElement username = usernameToken.addChildElement("Username", "wsse");
SOAPElement password = usernameToken.addChildElement("Password", "wsse");
username.setTextContent(someUsername);
password.setTextContent(somePassword);
} catch (Exception e) {
//... handle appropriately
}
}
注意:此示例已使用 Spring WS 2.1.4 进行测试。
关于java - 如何将 SOAP header 添加到 Spring Jax-WS 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046075/