首页 > 解决方案 > org.apache.cxf.interceptor.Fault:给定的 SOAPAction 与操作不匹配

问题描述

我正在公开一个在本地或在集成测试中工作的 Web 服务。然而,由于我的客户不想改变他调用和解组的方式,我不得不添加一个 SOAP 处理程序来调整一些响应前缀。

现在 web 服务仍然在本地工作,从 Postman 或 SoapUI 调用。但它在集成测试中不起作用。它通过处理程序,它不会改变任何东西,因为操作只是为了响应,但它给出:

org.apache.cxf.interceptor.Fault: The given SOAPAction http://tempuri.org/AddItem does not match an operation

<wsdl:operation name="AddItem">
<soap:operation soapAction="http://tempuri.org/AddItem" style="document"/>

我无法理解处理程序是如何导致这种行为的,因为它没有触及请求或 SOAP 信封。

客户端当然是用 C# 开发的,但是它也没有解释它是如何在没有处理程序的情况下工作的。我可以在本地看到 SOAP Action 标头是“”,当客户端调用时,SOAP Action 是http://tempuri.org/AddItem

我的 webmethod 有以下注释

@WebMethod(operationName = "AddItem", action = "AddItem")

而且我也尝试过使用 CXF 拦截器,并且发生了同样的情况。

我已经浪费了很多时间来尝试完成这项工作,但仍然没有成功。我已经检查了一些帖子建议 SOAP 动作应该是{http://tempuri.org}/AddItem因为 CXF 不理解http://tempuri.org/AddItem没有括号作为 SOAP 动作。其他一些帖子说 SOAP 操作应该是空的。无论哪种情况,我都必须在处理程序/拦截器中更改它,但我看不出如何。任何人都可以帮助我理解这一点,或者帮助我与处理程序一起工作?

标签: javaweb-servicessoapcxf

解决方案


推荐阅读