2012-05-28 92 views
3

我正在做一個很簡單的錯誤,但似乎無法解決。我正在嘗試使用PHP SoapClient庫向SOAP服務發送SOAP請求。PHP SoapClient:類stdClass的對象無法轉換爲字符串

「類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來返回一個字符串。爲什麼一個對象正在返回?預先感謝您的幫助。

回答

2

那麼,你的期望可能是錯的。一個var_dumpprint_r可以在什麼$results實際上是,再追問的WSDL可以告訴你揭示了原因:

提示:__getTypes()

struct ConvertTempResponse { 
double ConvertTempResult; 
} 
+0

謝謝。你是對的。我現在看到該呼叫正在作爲對象返回。現在將$ results作爲對象處理,我無法訪問成員ConvertTempResult。也許我的語法不正確。我正在使用'print $ results-> ConvertTempResult',但是我現在收到一個「未定義的變量」錯誤。 – dsell002

+0

其餘的代碼保持不變,'print $ results-> ConvertTempResult;'在這裏工作......你確定你沒有改變任何東西嗎? – Wrikken

+0

嗯,我想知道它至少在某個地方工作是很好的。代碼與唯一的區別是對成員變量的引用相同。我認爲這可能會脫離原來的主題,所以我不認爲我會再把這個主題拖出來。如果代碼正在工作,那麼很可能是我的設置有問題,可能是服務器設置(XAMPP),防火牆等等。謝謝您的幫助。 – dsell002

相關問題