java - 由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有 Action 的消息
问题描述
调用 Web 服务时收到此错误消息:-
org.springframework.ws.soap.client.SoapFaultClientException:由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有 Action '' 的消息。这可能是因为合约不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。
解决方案
您忘记在调用 Web 服务之前指定 SOAP 操作。打开您的 WSDL 文件并搜索您尝试调用的操作。您应该看到如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions ...>
...
<wsdl:binding ...>
...
<wsdl:operation name="OhMyGawd">
<soap:operation soapAction="http://oh.my.gawd"/>
...
</wsdl:operation>
</wsdl:binding>
...
记下这个soapAction
值,在这个例子中,它是http://oh.my.gawd。
如果您使用的是 Spring Web Services,请添加以下行:
@Autowired
private WebServiceTemplate webServiceTemplate;
public void run() {
ObjectFactory objectFactory = new ObjectFactory();
// Create the request payload
OhMyGawd ohMyGawd = objectFactory.createOhMyGawd();
ohMyGawd.setValue(...);
OhMyGawdResponse response = (OhMyGawdResponse) webServiceTemplate.marshalSendAndReceive(
ohMyGawd,
new SoapActionCallback("http://oh.my.gawd")
);
...
}
注意:感谢本网站https://myshittycode.come
推荐阅读
- angular - 如果存在,则获取数组中第一项的属性
- apache-spark - 块大小无效或太大 - 无法读取 Avro 文件
- python - 匹配除三个连续双引号外的所有内容
- python - HOGDescriptor 返回错误:img.type() == 0 || img.type() == (((0) & ((1 << 3) - 1)) + (((3)-1) << 3)) 在函数 cv::HOGDescriptor::computeGradient
- vector - 为什么擦除函数会产生运行时错误?
- c# - Xamarin iOS SslStream.AuthenticateAsUser() 返回异常“未知安全传输错误‘PeerHandshakeFail’。”
- python - 在flask-sqlalchemy中从用户中选择id
- python - 在 pyqt5 的 btn.clicked.connect() 方法中返回一个变量
- android - Dagger 组件:错误:找不到符号 kotlin 类
- regex - 正则表达式匹配 - 仅当 4 个字符长且不包含特定单词时