【问题标题】:Java add SOAP header without xmlns attributeJava 添加没有 xmlns 属性的 SOAP 标头
【发布时间】:2012-03-07 19:38:27
【问题描述】:

我需要向 SOAP 请求添加标头,我使用以下代码来完成:

INotificationManagement notification = host.getBasicHttpBindingINotificationManagement();

    WSBindingProvider bp = (WSBindingProvider)notification;
    bp.setOutboundHeaders(Headers.create(newQName("bob:sessionId"),sessionId));

我得到:

<S:Header><bob:sessionId xmlns="">aosidaosi</bob:sessionId></S:Header>

问题是我不希望 xmlns 属性在那里......它应该只是 &lt;bob:sessionId&gt; 我尝试了所有新的 QName 方法,但它仍然放置了 xmlns 属性。

还有没有 xmlns 属性的标题?

【问题讨论】:

    标签: java soap http-headers


    【解决方案1】:

    你必须在某处声明“bob”的命名空间,这是必须的。您可以直接在节点中(如您的问题)或在父节点中的某处执行此操作:

    <S:Header xmlns:bob="bob namespace">
      <bob:sessionId>aosidaosi</bob:sessionId>
    </S:Header>
    

    甚至更高,在信封级别

    <S:Envelope xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:bob="bob namespace">
      <S:Header>
        <bob:sessionId>aosidaosi</bob:sessionId>
        ...
      </S:Header>
    ....
    </S:Envelope>
    

    【讨论】:

    • 如何将 xmlns:bob 添加到 S:Header?
    • @doubter,作为javax.xml.soap.SOAPHeader实现org.w3c.dom.Element,我相信你可以通过setAttributesetAttributeNS方法实现。
    • 我不能在 Headers.create(...).setAttribute 上执行 .setAttribute 并且我只有 SOAPHeader 作为接口。我错过了什么吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2015-06-21
    • 2017-04-25
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多