JAX-WS通常使用的SOAP客户端请求可能如下:
FooService service = new FooService();
FooPort port = service.getFooPort();
FooPayload payload = new FooPayload();
payload.setHatSize(3);
payload.setAlias("The Hat");
...
port.processRequest(payload);
这将生成类似于HTTP请求内容的东西
<?xml ... ?>
<S:Envelope xmlns:S="http://...soap-envelope">
<S:Body>
<!-- payload -->
</S:Body>
</S:Envelope>
通过操作port.processRequest()调用的参数,您只能影响“负载”部分。您无法影响XML消息的外部部分。
我想在SOAP Body之前插入一个SOAP头<S:Header>
<X:Security xmlns:X="http://...wsssecurity...>
<X:BinarySecurityToken>kjh...897=</X:BinarySecurityToken>
</X:Security>
</S:Header>
我该如何做到这点?