Java添加没有xmlns属性的SOAP标头

时间:2012-03-07 19:38:27

标签: java soap http-headers

我需要在SOAP请求中添加一个Header,并使用以下代码执行:

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属性存在......它应该只是<bob:sessionId> 我尝试了所有新的QName方法,但它仍然放置了xmlns属性。

是否有没有xmlns属性的标题?

1 个答案:

答案 0 :(得分:0)

你必须在某处声明“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>