我在使用PHP SoapClient()函数时遇到了困难。 SOAP请求成功,但响应作为包含单个XML字符串且对象为“any”的对象返回。例如:
<?php
$params = array('strUsername' => 'Test',
'strPassword' => 'Test');
$client=new SoapClient('http://www.example.com/webservice.asmx?wsdl',
array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));
$result = $client->strExampleCall($params);
print_r($result);
?>
这输出以下内容:
stdClass Object
(
[strExampleCallResult] => stdClass Object
(
[any] => <Response xmlns="" release="1.0.0" environment="Production" lang="en-GB"><ApplicationArea><Sender><SenderId>0</SenderId><ReferenceId>0</ReferenceId></Sender><Destination><DestinationId>1</DestinationId></Destination></ApplicationArea><DataArea><Result>1</Result></DataArea></Response>
)
)
随后,我无法按照我的预期访问对象的属性:
echo $result->strExampleCallResult->Response->DataArea->Result;
为什么PHP不将SOAP响应解析为返回对象的属性?
我正在使用PHP 5.3.0并且相信SOAP服务器正在运行.NET。
答案 0 :(得分:1)
我现在已经解决了这个问题。
第三方SOAP服务器旨在以XML格式返回数据,嵌套在SOAP响应中。我现在正在使用SimpleXML解析XML响应。