I am 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 faq to add headers to CXF messages and it will deliver me almost there, but not quite. The example they give for option 4 is as follows:
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 in the "HeaderInfo" node there is no child "token" of the node to surround the "abc-unique-token", and I'm not sure how to get it.
Is there some simple thing that I can pass to the header constructor to create the node?
A separate post talks about using a different technique, but it causes errors for me around SoapFactory when I try to use it.
A significant part of the other things I found needs to create something that extends the AbstractPhaseInterceptor class with a bunch of extra code when I want it so close :).
source share