如何将自定义SOAP标头添加到请求中?

时间:2019-05-13 09:40:44

标签: java jax-ws

我正在尝试调用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生成了源 并且我知道我必须将端口向下转换为BindingProviderWSBindingProvider,但是我应该如何使用嵌套的USERAREA创建Security和CONTEXT标签元素?

ANWSCNEGPortType port = service.getANWSCNEGBindingQSPort();
WSBindingProvider provider = (WSBindingProvider) port;
provider.setOutboundHeaders(); // <--- how can I create proper headers?

0 个答案:

没有答案