PHP SoapClient()函数返回单个XML字符串

时间:2010-03-16 18:21:58

标签: php soap soap-client

我在使用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。

1 个答案:

答案 0 :(得分:1)

我现在已经解决了这个问题。

第三方SOAP服务器旨在以XML格式返回数据,嵌套在SOAP响应中。我现在正在使用SimpleXML解析XML响应。