Типичный запрос клиента SOAP с использованием JAX-WS может быть
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 непосредственно перед телом SOAP
<S:Header>
<X:Security xmlns:X="http://...wsssecurity...>
<X:BinarySecurityToken>kjh...897=</X:BinarySecurityToken>
</X:Security>
</S:Header>
Как мне это сделать?