Функция PHP SoapClient (), возвращающая одну строку XML - PullRequest
1 голос
/ 16 марта 2010

У меня проблемы с функцией 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 Ответ

1 голос
/ 18 марта 2010

Я сейчас решил это.

Сторонний SOAP-сервер был разработан для возврата данных в формате XML, вложенных в ответ SOAP. Сейчас я анализирую XML-ответ с помощью SimpleXML.

...