如何获取soap web服务数据


How to get the soap web service data

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

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

谢谢你的帮助

SOAP在开始时是相当痛苦的…在开始之前检查官方文档以及一些关于SOAP如何工作的信息将是一个好主意。

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

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

这意味着如果你想从web服务中执行一个名为"getProduct"的方法,它所需要的就是为它实例化一个SoapClient,然后调用$yourSoapClientInstance->getProduct()

假设你想为这个web服务使用一个方法。该服务提供"今日呆伯特"answers"每日呆伯特"两种方式。这样做很简单:

<?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对象。

希望这对你有帮助!

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

http://php.net/manual/en/class.soapclient.php