我有一个网络服务,只是做简单的事情来在 SOAP 客户端中调用网络服务
IE
$client = new SoapClient("http://test.unistream.com/wcflib/service.svc?WSDL");
它说
SOAP-ERROR:解析 WSDL:“IWebService_GetCountries_InputMessage”已定义
网络服务是
http://test.unistream.com/wcflib/service.svc?WSDL
谢谢。
我有一个网络服务,只是做简单的事情来在 SOAP 客户端中调用网络服务
IE
$client = new SoapClient("http://test.unistream.com/wcflib/service.svc?WSDL");
它说
SOAP-ERROR:解析 WSDL:“IWebService_GetCountries_InputMessage”已定义
网络服务是
http://test.unistream.com/wcflib/service.svc?WSDL
谢谢。
它可能与此相关或相同的问题: https://bugs.php.net/bug.php?id=43868,
你也可以在这里找到一个可能的解决方案 PHP SoapClient: Problems with Distributed WSDL File
(可能重复...)
稍后编辑,这里有另一个链接:http ://www.codingforums.com/showthread.php?t=181338
问题是在该 WSDL 中不止一次定义了“IWebService_GetCountries_InputMessage”类型。这不是您的代码错误,而是您尝试使用的 WSDL。您应该与编写 WSDL 的人交谈,看看他们是否可以重新创建它并解决问题。
我的系统遇到了同样的错误:Soap 客户端使用 PHP(5.3.10),而服务器端使用 .NET 编写:
为了避免这种情况,我简单地使用.net 的不区分大小写的标准功能,并且我将第一个 wsdl 称为小写(“foo.wsdl”)而不是原始大小写(Foo.wsdl)。它起作用了,因为现在 foo.wsdl 导入 Bar.wsdl,而 Bar.wsdl 导入 Foo.wsdl,而且奇怪的是我无法解释,PHP 喜欢这样。