java - 如何将 SOAP header 添加到 Spring Jax-WS 客户端?

标签 java spring jax-ws soapheader

如何将 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/

相关文章:

java - 在不声明大小的情况下创建数组 - java

java - hadoop-映射 reduce task 和静态变量

java - NavigationDrawer 不起作用,它在执行某些操作之前关闭

java - 配置 spring-social 通过代理工作

java - 当外部事务被标记为回滚时回滚所有嵌套事务

java - AutowireCapableBeanFactory.autowireBeanProperties() 似乎不适用于 xml 配置的上下文

java - 创建 JAX-WS 客户端以利用 .NET Web 服务(需要身份验证)

java - 如何在不丢失像素的情况下将图像调整为高分辨率图像?

java - 无法在 "The java web services tutorial"之后找到 taskdef 类 com.sun.tools.ws.ant.WsImport

java - 从 WSDL 链接 java 访问 Web 服务