I'm creating a Groovy client for a .net SOAP service that requires a soap header that looks like this:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
<token>abc-unique-token</token>
</HeaderInfo>
</soap:Header>
I found the faq for adding headers to CXF messages and it gets me almost there, but not quite. The example they give for option 4 looks like this:
List<Header> headers = new ArrayList<Header>()
Header header = new Header(new QName("http://foo.bar.com/ns", "HeaderInfo"),
"abc-unique-token", new JAXBDataBinding(String.class))
headers.add(header)
proxy.client.getRequestContext().put(Header.HEADER_LIST, headers)
Using this code, I can get it to do this:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
abc-unique-token
</HeaderInfo>
</soap:Header>
But the "HeaderInfo" node is missing the child "token" node to surround "abc-unique-token" and I'm not sure how to get it in there.
Is there some simple thing that I can pass to the Header constructor to create that node?
A separate post talks about using a different technique, but this throws errors for me around the SoapFactory when I try to use it.
Much of the other stuff that I've found gets into needing to create something extending an AbstractPhaseInterceptor class with a bunch of additional code, when what I want is so close :).