首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CXF (实际上是GroovyWS),如何生成一个包含一个包含文本节点的子节点的SOAP标头?

使用CXF (实际上是GroovyWS),如何生成一个包含一个包含文本节点的子节点的SOAP标头?
EN

Stack Overflow用户
提问于 2010-09-28 05:12:42
回答 1查看 1.9K关注 0票数 3

我正在为一个.net SOAP服务创建一个Groovy,它需要如下所示的soap头:

代码语言:javascript
复制
<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的示例如下:

代码语言:javascript
复制
    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)

使用下面的代码,我可以让它这样做:

代码语言:javascript
复制
<soap:Header>
    <HeaderInfo xmlns="http://foo.bar.com/ns">
        abc-unique-token
    </HeaderInfo>
</soap:Header>

但是"HeaderInfo“节点缺少子"token”节点来包围“abc- sure token”,我不确定如何将其放入其中。

有没有什么简单的东西可以传递给头构造函数来创建那个节点?

一个separate post说要使用一种不同的技术,但是当我尝试使用它时,这会在SoapFactory周围抛出错误。

当我想要的东西非常接近时,我发现很多其他的东西都需要创建一些东西来扩展AbstractPhaseInterceptor类,用一堆额外的代码:)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-28 05:50:00

在发现我提到的单独帖子中的SOAPFactory方法需要saaj-impl.jar才能工作后,我才能让它工作:

代码语言:javascript
复制
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类,我仍然很好奇(并且会接受答案)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3807922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档