3

我有一个网络服务,只是做简单的事情来在 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

谢谢。

4

3 回答 3

1

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

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

(可能重复...)

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

于 2011-08-08T13:25:32.423 回答
1

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

于 2011-08-08T13:37:45.067 回答
0

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

  • 我从 PHP 加载了 wsdl“Foo.wsdl”
  • 然后“Foo.wsdl”导入了“Bar.wsdl”
  • 然后“Bar.wsdl”再次导入“Foo.wsdl”
  • PHP 崩溃并出现“SOAP-ERROR: Parsing WSDL: bla bla already defined

为了避免这种情况,我简单地使用.net 的不区分大小写的标准功能,并且我将第一个 wsdl 称为小写(“foo.wsdl”)而不是原始大小写(Foo.wsdl)。它起作用了,因为现在 foo.wsdl 导入 Bar.wsdl,而 Bar.wsdl 导入 Foo.wsdl,而且奇怪的是我无法解释,PHP 喜欢这样。

于 2014-03-10T09:29:15.377 回答