包含Soap头-ApacheCXF

包含Soap头-ApacheCXF,soap,soap-client,Soap,Soap Client,我已经尝试在ApacheCXF文档之后添加标题 List<Header> headers = new ArrayList<Header>(); Header dummyHeader = new Header(new QName("uri:org.apache.cxf", "dummy"), "decapitated", new JAXBDataBinding(String.class)); headers.a

我已经尝试在ApacheCXF文档之后添加标题

List<Header> headers = new ArrayList<Header>();
Header dummyHeader = new Header(new QName("uri:org.apache.cxf", "dummy"), "decapitated",
                                new JAXBDataBinding(String.class));
headers.add(dummyHeader);

//server side:
context.getMessageContext().put(Header.HEADER_LIST, headers);

//client side:
((BindingProvider)proxy).getRequestContext().put(Header.HEADER_LIST, headers);
List headers=new ArrayList();
Header dummyHeader=新的头(新的QName(“uri:org.apache.cxf”,“dummy”),“斩首”,
新的JAXBDataBinding(String.class));
headers.add(dummyHeader);
//服务器端:
context.getMessageContext().put(Header.Header\u列表,headers);
//客户端:
((BindingProvider)proxy.getRequestContext().put(Header.Header_列表,headers);
这将生成格式为的标题

<SoapHeader>
<dummy xmlns="uri:org.apache.cxf.dummy>decapitated</dummy>
</SoapHeader>

斩首

一个选项是创建一个SOAPElement并将其添加到标题中,如下所示:

SOAPFactory sf = SOAPFactory.newInstance();
SOAPElement seqElement = sf.createElement(new QName("uri:org.apache.cxf","dummy"));
SOAPElement textElement = sf.createElement(new QName("uri:org.apache.cxf","value"));
textElement.addTextNode("decapitated");
seqElement.addChildElement(textElement);

SoapHeader dummyHeader = new SoapHeader(new QName("uri:org.apache.cxf","dummy"), seqElement);

在最后一个例子中,我们只是将sequellement添加到SoapHeader中,因此仍然无法解决该值的问题SOAPElement textElement=seqElement.addChildElement(“值”);忘了这一点,在回答中补充道:)
SOAPFactory sf = SOAPFactory.newInstance();
SOAPElement seqElement = sf.createElement(new QName("uri:org.apache.cxf","dummy"));
SOAPElement textElement = sf.createElement(new QName("uri:org.apache.cxf","value"));
textElement.addTextNode("decapitated");
seqElement.addChildElement(textElement);

SoapHeader dummyHeader = new SoapHeader(new QName("uri:org.apache.cxf","dummy"), seqElement);