【问题标题】:PHP webservice SOAPClient errorPHP网络服务SOAPClient错误
【发布时间】:2010-09-27 21:07:27
【问题描述】:

我有一个网络服务,只是做简单的事情来在 SOAP 客户端中调用网络服务

$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

谢谢。

【问题讨论】:

    标签: php web-services soap-client


    【解决方案1】:

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

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

    (可能重复...)

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我的系统遇到了同样的错误: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 称为 lower case(“foo.wsdl”)而不是原来的情况(Foo.wsdl)。 它起作用了,因为现在 foo.wsdl 导入 Bar.wsdl,而 Bar.wsdl 导入 Foo.wsdl,而且奇怪的是我无法解释,PHP 喜欢这样。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多