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