微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 将SoapHeader添加到org.springframework.ws.WebServiceMessage

如何将对象添加到org. springframework.ws.WebServiceMessage的soap头中

这是我想要的结构:

<soap:Header>
    <credentials xmlns="http://example.com/auth">
      <username>username</username>
      <password>password</password>
    </credentials>
  </soap:Header>

解决方法

基本上,您需要在客户端中使用 WebServiceMessageCallback修改消息,在创建之后但在发送之前.其余的代码已被@skaffman准确描述,所以整个内容可能如下所示:
public void marshalWithSoapActionHeader(MyObject o) {

    webservicetemplate.marshalSendAndReceive(o,new WebServiceMessageCallback() {

        public void doWithMessage(WebServiceMessage message) {
            try {
                SoapMessage soapMessage = (SoapMessage)message;
                SoapHeader header = soapMessage.getSoapHeader();
                StringSource headerSource = new StringSource("<credentials xmlns=\"http://example.com/auth\">\n +
                        <username>"+username+"</username>\n +
                        <password>"+password"+</password>\n +
                        </credentials>");
                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(headerSource,header.getResult());
            } catch (Exception e) {
                // exception handling
            }
        }
    });
}

就个人而言,我发现Spring-WS对于这样一个基本需求很难,应该修复SWS-479.

原文地址:https://www.jb51.cc/java/123292.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐