1
這裏是WSDL格式:SoapClient的返回一個長字符串
http://www.petango.com/webservices/wsadoption.asmx?WSDL
我使用它說,它將返回下面的XML格式的SOAP響應開發者提供的測試服務器:
<ArrayOfXmlNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.petango.com/">
<!-- Animal 1 // -->
<XmlNode>
<adoptableSearch xmlns="">
<ID>10270740</ID>
<Name>Peyton</Name>
<Species>Dog</Species>
<Sex>Male</Sex>
</adoptableSearch>
</XmlNode>
...
<!-- Animal n - 1 // -->
<XmlNode>
<adoptableSearch xmlns="">
<ID>4252534</ID>
<Name>Chilli</Name>
<Species>Dog</Species>
<Sex>Male</Sex>
</adoptableSearch>
</XmlNode>
</ArrayOfXmlNode>
我成立了SOAP調用:
$wsdl = 'http://www.petango.com/webservices/wsadoption.asmx?WSDL';
$client = new SoapClient($wsdl);
$params = array(
'authkey' => 'myauthkey',
'speciesID' => '',
'sex' => '',
'ageGroup' => '',
'location' => '',
'site' => '',
'onHold' => '',
'orderBy' => '',
'primaryBreed' => '',
'secondaryBreed' => '',
'specialNeeds' => '',
'noDogs' => '',
'noCats' => '',
'noKids' => '',
'stageID' => ''
);
$result = $client->AdoptableSearch($params);
然後我把它打印出來:
echo print_r($result, true);
當我查看源代碼,我得到:
stdClass Object
(
[AdoptableSearchResult] => stdClass Object
(
[XmlNode] => Array
(
[0] => stdClass Object
(
[any] => <adoptableSearch xmlns=""><ID>10270740</ID><Name>Peyton</Name><Species>Dog</Species><Sex>Male</Sex></adoptableSearch>
)
[1] => stdClass Object
(
[any] => <adoptableSearch xmlns=""><ID>10270740</ID><Name>Peyton</Name><Species>Dog</Species><Sex>Male</Sex></adoptableSearch>
)
...
正如你所看到的,符合市場預期,直到我們得到的實際細節被返回的一切這個動物。此時,結果是any
屬性下的一個長XML字符串。 any
屬性來自哪裏,爲什麼動物細節不會像xml節點的結果那樣分解爲單獨的屬性或關鍵字?
所以我必須手動做到這一點,並沒有因爲WSDL格式的沒有辦法自動獲取領域劃分,? –
是的,我相信。有一些PHP Web服務的框架http://wso2.com/products/web-services-framework/php/他們可能會這樣做,但我沒有試過類型。 –