PHP webservice SOAPClient错误

时间:2010-09-27 21:07:28

标签: php web-services soap-client

我有一个webserivce,只是简单地在SOAP客户端调用webservice

即。

$ 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

感谢。

3 个答案:

答案 0 :(得分:1)

它可能与此相关或相同: https://bugs.php.net/bug.php?id=43868

你也可以在这里找到一个可能的解决方案 PHP SoapClient: Problems with Distributed WSDL File

(也许重复......)

稍后编辑,这里是另一个链接:http://www.codingforums.com/showthread.php?t=181338

答案 1 :(得分:1)

问题是'IWebService_GetCountries_InputMessage'类型在该WSDL中定义了多次。这不是您的代码的错误,而是您尝试使用的WSDL。您应该与编写WSDL的人交谈,看看他们是否可以重新创建它并解决问题。

答案 2 :(得分:0)

我的系统出现了同样的错误:Soap客户端使用PHP(5.3.10),服务器端使用.NET编写:

  • 我从PHP
  • 加载了wsdl“Foo.wsdl”
  • 然后“Foo.wsdl”导入了“Bar.wsdl”
  • 然后“Bar.wsdl”再次导入“Foo.wsdl”
  • PHP崩溃与“SOAP-ERROR:解析WSDL:bla bla已定义

为了避免这种情况,我只使用.net 的大小写不敏感的标准功能,并在小写(“foo.wsdl”)中调用第一个wsdl而不是原始案例(Foo.wsdl)。 它起作用,因为现在,foo.wsdl导入Bar.wsdl,并且Bar.wsdl导入Foo.wsdl,并且通过我无法解释的奇怪的事情,PHP喜欢它。