我正在为 .net SOAP 服务创建一个 Groovy 客户端,该服务需要一个如下所示的 soap 标头:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
<token>abc-unique-token</token>
</HeaderInfo>
</soap:Header>
我找到了为 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)
使用这段代码,我可以让它做到这一点:
<soap:Header>
<HeaderInfo xmlns="http://foo.bar.com/ns">
abc-unique-token
</HeaderInfo>
</soap:Header>
但是“HeaderInfo”节点缺少围绕“abc-unique-token”的子“token”节点,我不知道如何将它放在那里。
是否有一些简单的东西可以传递给 Header 构造函数来创建该节点?
另一篇文章讨论了使用不同的技术,但是当我尝试使用它时,这会在 SoapFactory 周围引发错误。
当我想要的东西如此接近时,我发现的许多其他东西都需要使用一堆额外的代码来创建扩展 AbstractPhaseInterceptor 类的东西:)。