3

私は本当に単純な間違いである可能性が高いものを作っていますが、うまくいかないようです. PHP SoapClient ライブラリを使用して SOAP リクエストを Web サービスに送信しようとしています。印刷しようとすると、次のエラーが発生します。

「クラス stdClass のオブジェクトを文字列に変換できませんでした」

主に PHP SoapClient マニュアルから抜粋したコードを次に示します。

<?php

try { 
    $options = array( 
                     'soap_version'=>SOAP_1_2, 
                     'exceptions'=>true, 
                     'trace'=>1, 
                     'cache_wsdl'=>WSDL_CACHE_NONE 
                    ); 
    $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL', $options); 

    $results = $client->ConvertTemp(array('Temperature'=>'100', 'FromUnit' => 'degreeCelsius',
                                          'ToUnit' => 'degreeFahrenheit')); 
    } 
    catch (Exception $e) 
    { 
      echo "<h2>Exception Error!</h2>"; 
      echo $e->getMessage(); 
    } 

$results = $client->ConvertTemp(array('Temperature'=>'100', 'FromUnit' => 'degreeCelsius',
                                    'ToUnit' => 'degreeFahrenheit')); 

print $results;
?>

オブジェクトのメンバーではなく、オブジェクト全体を印刷しようとしているというメッセージが表示されていることを理解しています。私が理解していないのは、ConvertTemp の呼び出しが文字列を返すことを期待していることです。オブジェクトが返されるのはなぜですか? 助けてくれてありがとう。

4

1 に答える 1

2

まあ、あなたの期待は間違っているかもしれません。var_dumpまたは、実際に何がprint_r何であるかを$results明らかにすることができます。wsdl を再検査すると、その理由がわかります。

ヒント: __getTypes():

struct ConvertTempResponse {
 double ConvertTempResult;
}
于 2012-05-28T17:13:35.937 に答える