我正在为一个.net SOAP服务创建一个Groovy,它需要如下所示的soap头:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
<token>abc-unique-token</token>
</HeaderInfo>
</soap:Header>我找到了the faq for adding headers to CXF messages,它几乎带我到了那里,但并不完全是。他们给出的选项4的示例如下:
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)使用下面的代码,我可以让它这样做:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
abc-unique-token
</HeaderInfo>
</soap:Header>但是"HeaderInfo“节点缺少子"token”节点来包围“abc- sure token”,我不确定如何将其放入其中。
有没有什么简单的东西可以传递给头构造函数来创建那个节点?
一个separate post说要使用一种不同的技术,但是当我尝试使用它时,这会在SoapFactory周围抛出错误。
当我想要的东西非常接近时,我发现很多其他的东西都需要创建一些东西来扩展AbstractPhaseInterceptor类,用一堆额外的代码:)。
发布于 2010-09-28 05:50:00
在发现我提到的单独帖子中的SOAPFactory方法需要saaj-impl.jar才能工作后,我才能让它工作:
List<Header> headers = new ArrayList<Header>()
SOAPFactory sf = SOAPFactory.newInstance()
def authElement = sf.createElement(new QName("http://foo.bar.com/ns", "HeaderInfo"))
def tokenElement = authElement.addChildElement("token")
tokenElement.addTextNode("abc-unique-token")
SoapHeader tokenHeader = new SoapHeader(
new QName("http://foo.bar.com/ns", "HeaderInfo"), authElement);
headers.add(tokenHeader);
proxy.client.getRequestContext().put(Header.HEADER_LIST, headers)对于使用CXF推荐的方式并将节点子类添加到Header类,我仍然很好奇(并且会接受答案)。
https://stackoverflow.com/questions/3807922
复制相似问题