对于使用WSDL的Web服务调用,我收到错误Cannot find dispatch method for {http://ws.somecompany.com/services}ValidateUser
,这究竟是什么意思?这是否意味着找不到ValidateUser
?
这通常意味着SOAP框架无法找到应通过此请求调用的操作。 SOAP框架通常检查消息以查找有关如何将消息路由到操作的指针。出现此错误的原因主要是配置问题(不同的命名空间,不同的编码(RPC与doc / lit),WS-Addressing与普通SOAP的使用等)
我有一个类似的问题,并在苦苦挣扎,谷歌搜索1天。但这是一个简单的错误,而不是:
{http://ws.somecompany.com/services}ValidateUser
它应该是
{http://ws.somecompany.com/services/}ValidateUser
我没有清楚地检查我的WSDL。
在我的情况下,我解决了确保我的配置文件app.config或web.config取决于您的客户端具有正确的端点。我的端点中的地址错误。我改变它,它工作正常。
我也失去了一天这个问题,尽管有不同的根本原因。
在我们的例子中,两个类似的端点URL已经在属性文件中混淆了。这两个服务都存在并且正在运行,但是WSDL没有匹配,因此我们得到了这个SOAPFaultException而不是ConnectionException:“找不到调度方法”。
我的五十分钱,我得到了同样的错误信息,但我的情况与上述情况有所不同,所以希望它可以帮助某人。
我有.wsdl文件,当w的另一边的同事重新命名某个元素时,它已经过时了。不幸的是,当我将.wsdl与他们进行比较时,变化是不可见的。因为.wsdl文件的.xsd导入实际上包含了重命名的元素。在我找到更改后,我更新了我的.xsd文件和tada!错误消失了它的确有效。
在我的情况下,即使我提供了所有参数,以下异常仍在抛出
SoapFault exception: [S:Client] Cannot find dispatch method for {}parameters in
在敲了几个小时后,只需添加一个\,同时初始化SoapClient解决了这个问题。
从:
$client = new SoapClient($soapURL);
至:
$client = new \SoapClient($soapURL);
我在.NET应用程序中遇到了同样的问题,在我的情况下,设置url与“http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl”(虚拟URL)相同,解决了以下代码中的问题。
Dim rptGen as WSTestProject.testproject = Nothing
rptGen = New WSTestProject.testproject With {
.Url = "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl",
.Timeout = 1200000
}
这里,WSTestProject是WebService NameSpace,testproject是web方法。