3

PHP SoapClient()関数に問題があります。SOAP要求は成功しますが、応答は、キー「any」を持つ単一のXML文字列を含むオブジェクトとして返されます。例えば:

<?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を実行していると思います。

4

1 に答える 1

2

私は今これを解決しました。

サード パーティの SOAP サーバーは、SOAP 応答内にネストされた XML 形式でデータを返すように設計されています。現在、SimpleXML を使用して XML 応答を解析しています。

于 2010-03-17T22:36:59.893 に答える