Reputation: 3329
I need a soap header like this:
<MyHeader xmlns:foo="http://foourl" xmlns:bar="http://barurl" bar:someParam="true", otherParam="hereiam">WORLD</MyHeader>
I tried to create it like:
new SoapHeader(new QName("http://foourl", "MyHeader", "foo"),
"WORLD", new JAXBDataBinding(String.class)));
But I just get
<MyHeader xmlns:foo="http://foourl">WORLD</MyHeader>
How can I set the other parts of the header (xmlns:bar
, bar:someParam
, otherParam
)? TIA!
Upvotes: 0
Views: 736
Reputation: 26
Example:
private void addHeader(String localPart, String valueElement, QName attributeQname, String attributeValue, List<Header> headers) {
var qname = new QName("http://www.w3.org/2005/08/addressing", localPart, "wsa");
var soapElement = createSoapElement(qname, attributeQname, attributeValue, valueElement);
headers.add(new Header(qname, soapElement));
}
private SOAPElement createSoapElement(QName elementQname, QName attributeQname, String attributeValue, String valueElement) {
SOAPElement element = null;
try {
SOAPFactory factory = SOAPFactory.newInstance();
element = factory.createElement(elementQname);
if (Objects.nonNull(attributeQname) && Objects.nonNull(attributeValue))
element.addAttribute(attributeQname, attributeValue);
if (Objects.nonNull(valueElement))
element.addTextNode(valueElement);
} catch (SOAPException e) {
log.error("Can not create new element", e);
} finally {
return element;
}}
Upvotes: 0
Reputation: 3329
I found a solution for myself:
https://manoj29.wordpress.com/2011/12/29/apache-cxf-adding-custom-soap-headers-to-a-soap-message/
Upvotes: 1