Php 如何获取soapweb服务数据

Php 如何获取soapweb服务数据,php,web-services,soap,Php,Web Services,Soap,我有一个关于肥皂的新手问题。我试图从soapweb服务获取数据,我有一个由供应商提供的链接,比如 https://project/services/productLog?wsdl 如果我在浏览器中输入url,就会返回大量soap数据。我想知道如何使用php获取返回的数据 返回的数据如下所示 ...more.. <xs:complexType name="getProduct"> <xs:sequence> <xs:element minOccurs=

我有一个关于肥皂的新手问题。我试图从soapweb服务获取数据,我有一个由供应商提供的链接,比如

https://project/services/productLog?wsdl
如果我在浏览器中输入url,就会返回大量soap数据。我想知道如何使用php获取返回的数据

返回的数据如下所示

...more..

<xs:complexType name="getProduct">
   <xs:sequence>
   <xs:element minOccurs="0" name="id" type="xs:dateTime"/>
</xs:sequence>

</xs:complexType>
   <xs:complexType name="getProductOwner">
   <xs:sequence>
   <xs:element minOccurs="0" name="return" type="tns:getID"/>
   </xs:sequence>
</xs:complexType>

...more
…更多。。
更多

感谢您的帮助。

您看到的数据是实际的WSDL文件。要向web服务发出请求,需要使用web服务客户端。PHP网站在这方面有一些很好的信息:


刚开始时,肥皂是最让人头疼的事。。。最好在开始之前检查一下,以及一些关于SOAP如何工作的信息

也就是说,首先要考虑的是,您得到的url实际上是web服务的WSDL。 这相当于一个契约,该契约指定web服务提供哪些方法以及执行此操作所需的参数

通过wsdl,您可以创建一个SoapClient实例,然后可以使用该实例调用特定的方法。客户机本身是一个动态对象,使用WSDL中指定的相同方法自动创建

这意味着,如果您想从web服务执行一个名为“getProduct”的方法,只需为它实例化一个SOAP客户端,然后调用$yourSoapClientInstance->getProduct()

假设您想要为web服务使用一种方法。 该服务提供两种方法“TodaysDilbert”和“DailyDilbert”。这样做很简单:

<?php
try {

    $wsdl = "http://www.gcomputer.net/webservices/dilbert.asmx?wsdl"
    $soapClient = new SoapClient($wsdl);

    $response = $soapClient->TodaysDilbert();

    print "<pre>" . print_r($response, true) . "</pre>";

} catch (SoapFault $f) {
   // Your exception handling
}
?>

您应该注意,如果执行SoapClient方法的响应是一个复杂的结构,那么返回值将是一个包含整个响应结构的stdClass对象


希望这有帮助

您可以使用curl来获取数据。SOAP在开始时可能有点棘手。PHP为此提供了一些内置工具。有关简易教程,请参见: