我正在使用jax-ws从JAVA调用使用WS-Security的SOAP服务。
问题是响应包含一些mustUnderstand标头,而我得到了一个不被理解的Element SoapFaultException。

响应头看起来像这样:

 <s:Header>
  <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <u:Timestamp u:Id="_0">
        <u:Created>2011-12-19T15:38:49.023Z</u:Created>
        <u:Expires>2011-12-19T15:43:49.023Z</u:Expires>
     </u:Timestamp>
  </o:Security>




我可以为该标头添加一个伪SOAPHandler吗?还是将其修改为mustUnderstand =“ 0”?如何?

最佳答案

错过了覆盖处理程序中的getHeaders()方法。重写getHeaders()方法

@Override
    public Set<QName> getHeaders() {
        final QName securityHeader = new QName(
            "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
            "Security",
            "wsse");

        final HashSet headers = new HashSet();
        headers.add(securityHeader);

        // notify the runtime that this is handled
        return headers;
    }

10-05 23:56