gpt4 book ai didi

java - Apache CXF Web 服务上的 SOAP 命名空间问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:33 24 4
gpt4 key购买 nike

我正在使用 Apache CXF 3.0.2 公开一个在解码期间遇到命名空间问题的服务。当所有命名空间声明都在 SOAP 包级别完成时,当我要解码消息时,它们似乎被剥离或丢失。例如,以下内容将显示为无效 xml:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:v1="http://foo.com/v1"
xmlns:v2="http://bar.com/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body >
<v1:foo>
<v2:bar>
</v1:foo>
</soapenv:Body>
</soapenv:Envelope>

但是如果我将声明向下移动到soapbody或xml下面,则验证正常:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body xmlns:v2="http://bar.com/v2" xmlns:v1="http://foo.com/v1">
<v1:foo>
<v2:bar>
</v1:foo>
</soapenv:Body>
</soapenv:Envelope>

我一直在尝试编写一个拦截器来操纵传入的请求,并将我关心的 namespace 声明从 header 移动/复制到 Body 标记,但似乎无法以这种方式操纵传入的消息。有人有什么建议吗?

最佳答案

考虑扩展 AbstractSoapInterceptor,因为您正在使用 Apache CFX。重写 handleMessage() 使您可以访问 SOAPMessage 并可以对其进行操作。

Apache CFX Interceptors

关于java - Apache CXF Web 服务上的 SOAP 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com