Java添加不带xmlns属性的SOAP头

Java添加不带xmlns属性的SOAP头,java,soap,http-headers,Java,Soap,Http Headers,我需要向SOAP请求添加一个标头,并使用以下代码执行此操作: INotificationManagement notification = host.getBasicHttpBindingINotificationManagement(); WSBindingProvider bp = (WSBindingProvider)notification; bp.setOutboundHeaders(Headers.create(newQName("bob:sessionId"),s

我需要向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>
aosidaosi
问题是我不希望xmlns属性存在……它应该是
我尝试了所有新的QName方法,但它仍然保留了xmlns属性

是否仍然可以创建没有xmlns属性的头?

您必须在某个地方声明“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?@doiter,因为
javax.xml.soap.SOAPHeader
实现了
org.w3c.dom.Element
,我相信你可以通过
setAttribute
setAttributes
方法来实现。我不能在Header上添加.setAttribute。创建(…).setAttribute,我只有SOAPHeader作为接口。我错过什么了吗?