我正在尝试调用Web服务,但无法弄清楚如何添加SOAP标头。
已经为我提供了一个wsdl和一个模拟请求,该请求应包含一些SOAP标头,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>XXX</wsse:Username>
</wsse:UsernameToken>
</wsse:Security>
<wsctx:CONTEXT xmlns:wsctx="http://XXX">
<wsctx:USERAREA>
<wsctx:CICS-TOKEN>XXX</wsctx:CICS-TOKEN>
<wsctx:IST>XXX</wsctx:IST>
</wsctx:USERAREA>
</wsctx:CONTEXT>
</soapenv:Header>
<soapenv:Body>
<!-- ... -->
</soapenv:Body>
</soapenv:Envelope>
我使用org.codehaus.mojo:jaxws-maven-plugin
生成了源
并且我知道我必须将端口向下转换为BindingProvider
或WSBindingProvider
,但是我应该如何使用嵌套的USERAREA创建Security和CONTEXT标签元素?
ANWSCNEGPortType port = service.getANWSCNEGBindingQSPort();
WSBindingProvider provider = (WSBindingProvider) port;
provider.setOutboundHeaders(); // <--- how can I create proper headers?