由于EndpointDispatcher的ContractFilter不匹配,因此无法在接收方处理带有操作“”的消息

时间:2018-12-04 06:31:00

标签: java spring soap

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

org.springframework.ws.soap.client.SoapFaultClientException:由于EndpointDispatcher上的ContractFilter不匹配,因此无法在接收方处理带有动作“”的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配造成的。检查发送方和接收方具有相同的合同和绑定(包括安全性要求,例如消息,传输,无)。

1 个答案:

答案 0 :(得分:0)

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