由于EndpointDispatcher处的ContractFilter不匹配,无法在接收器处处理带有Action&qu



调用web服务时获取此错误消息:-

org.springframework.ws.soap.client.SoapFaultClientException:由于EndpointDispatcher处的ContractFilter不匹配,无法在接收器处处理操作为"的消息。这可能是因为合同不匹配(发送方和接收方之间的操作不匹配(或发送方和接收方间的绑定/安全性不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如Message、Transport、None(。

您忘记在调用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.

如果您使用的是SpringWebServices,请添加以下行:

@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

相关内容

最新更新