【问题标题】:How to connect to a remote web service via php using a local WSDL file?如何使用本地 WSDL 文件通过 php 连接到远程 Web 服务?
【发布时间】:2012-01-31 20:57:46
【问题描述】:

如果我想使用本地 WSDL 文件通过 PHP 连接到第三方 Web 服务,我认为我应该执行以下操作:

$client = new SoapClient("thefile.wsdl", array('location' => "http://anotherdomain.com/soap.asmx"));

如果您使用的是 WSDL 文件,那么您大概可以排除 uri(命名空间)变量吗?如果您没有在此处指定位置,那么它是否只使用在 WSDL 文件的服务部分中定义的soap:address?

谢谢!

戴夫

【问题讨论】:

    标签: php xml web-services soap wsdl


    【解决方案1】:

    位置在 wsdl 中(/应该是),因此第二个参数中的 location 是不必要的。 OTOH,我不知道如果您指定 另一个 位置会发生什么,您可以简单地测试一下,我猜它会忽略它(因为也可以为每个操作指定位置,wsdl 应该胜过它 IMO )。

    【讨论】:

    • 这就是我的想法,但根据对我的其他问题之一的回答感到困惑:stackoverflow.com/questions/9085571/…。那么 Web 服务 url 是否应该在 WSDL 的服务部分内的 soap:address 元素中定义?非常感谢
    • 在我见过的任何体面的 wsdl 中,address 没有任何提示,但端口和端点实际上定义了它们的最终地址。我必须承认我不确定 100% 是否需要它(the documentation 没有说“必须包含一个”,只是“不超过一个”。但是,我会假设它们是,如果不是,它们可能不会被发现,我会将它们添加到__soapCall的第三个参数中
    • 嗯,that documentation states“SOAP 地址绑定用于为端口提供地址(URI)。使用 SOAP 绑定的端口必须准确指定一个地址。” i>.
    • 简而言之:应该正确定义端口恕我直言(因为 SOAP 的全部意义在于它是可发现),但我不能说 100% 这是格式所要求的和/或人们是否大规模打破了这一惯例。 我的使用 SOAP 服务的轶事证据是它总是被很好地定义。
    • 所以你应该只使用 $client = new SoapClient("thefile.wsdl");哪个将使用 wsdl 文件中的
      变量作为 Web 服务位置?
    【解决方案2】:

    很简单

    $client = new SoapClient("http://anotherdomain.com/soap.asmx", array('soap_version' => SOAP_1_1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多