【发布时间】:2014-12-21 08:54:57
【问题描述】:
这是 WSDL 格式:
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 节点的结果那样分解成单独的属性或键?
【问题讨论】:
标签: php web-services soap wsdl soap-client