我有一个关于肥皂的新手问题。我试图从肥皂网服务获取数据,我有一个供应商提供的链接,如
https://project/services/productLog?wsdl
如果我在浏览器中输入网址,我会收到一堆肥皂数据。我想知道如何使用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
感谢您的帮助。
答案 0 :(得分:1)
您看到的数据是实际的WSDL文件。要向Web服务发出请求,您需要使用Web服务客户端。 PHP网站在这方面有一些很好的信息:
答案 1 :(得分:1)
开始时SOAP是背后的痛苦......在开始之前检查the official documentation是个好主意,以及有关SOAP如何工作的一些信息。
话虽这么说,首先要考虑的是你获得的url实际上是web服务的WSDL。 这相当于一个合同,它指定了Web服务提供的方法以及它需要执行的参数。
使用wsdl,您可以创建一个SoapClient实例,然后可以使用该实例调用特定方法。客户端本身是一个动态对象,使用WSDL中指定的相同方法自动创建。
这意味着如果你想执行一个名为&#34; getProduct&#34;的方法。从Web服务中,只需要为它实例化一个SoapClient,然后调用 $ yourSoapClientInstance-&gt; getProduct()。
想象一下,您想要使用this网络服务的方法。 该服务提供了两种方法&#34; TodaysDilbert&#34;和&#34; DailyDilbert&#34;。这样做很简单:
<?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
}
?>
您应该注意,如果来自ExapClient方法的响应是一个复杂的结构,那么您的返回值将是一个包含整个响应结构的stdClass对象。
希望这有帮助!