Ted*_*eid 3 groovy web-services cxf header groovyws
我正在为.net SOAP服务创建一个Groovy客户端,它需要一个如下所示的soap标头:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
<token>abc-unique-token</token>
</HeaderInfo>
</soap:Header>
Run Code Online (Sandbox Code Playgroud)
我找到了为CXF消息添加标题的常见问题,它让我几乎到了那里,但并不完全.他们为选项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)
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以这样做:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
abc-unique-token
</HeaderInfo>
</soap:Header>
Run Code Online (Sandbox Code Playgroud)
但是"HeaderInfo"节点缺少子"令牌"节点以包围"abc-unique-token",我不知道如何在那里获取它.
是否有一些简单的事情我可以传递给Header构造函数来创建该节点?
一篇单独的文章讨论了使用不同的技术,但是当我尝试使用它时,这会在SoapFactory周围抛出错误.
我发现的许多其他东西需要创建一些扩展AbstractPhaseInterceptor类的东西,带有一堆额外的代码,当我想要的是如此接近:).
在确定我提到的单独帖子中的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)
Run Code Online (Sandbox Code Playgroud)
我仍然好奇(并且会接受答案)围绕CXF推荐的方式并将节点子节点添加到Header类.
归档时间: |
|
查看次数: |
1813 次 |
最近记录: |