2010-10-18 59 views
2

我試圖從web服務獲取值。PHP SoapClient - 在響應中返回屬性值

的性反應被格式化爲..

<campaign Id="200"> <name> test </name> </campaign> 

PHP代碼

SoapClient("WSDL"); 

$return = $client->GetCampaigns('Username', 'Password'); 

然而,當我試圖訪問返回,我得到的只是一個stdClass的名爲屬性..

public 'Campaign' => 
array 
    0 => 
    object(stdClass)[46] 
     public 'Name' => string 'chris test' (length=10) 
+1

http://www.php.net/manual/en/soapclient.getlastresponse.php這將有助於 – zod 2010-10-18 14:00:13

+0

這是var_dump($ return)語句的完整輸出嗎? – thetaiko 2010-10-18 14:50:15

+0

是的 - 在這種情況下是的。 – 2010-10-18 15:13:57

回答

2

我發現我必須向SoapClient提供一個「classmap」來讓它將響應中的對象映射到d在PHP中定義。在WSDL中,類型名稱通常是較低的駝峯大小寫(以小寫和駱駝大小寫開頭)。

class MY_Campaign { 
    private $name; 
    function getName() { return $this->name; } 
} 

$options = array(
     'classmap' => array(
       'campaign' => 'MY_Campaign', 
      ); 
    ); 
$client = new SoapClient('http://example.com/yourservice?wsdl', $options); 
$return = $client->GetCampaigns(); 

如果我有WSDL,我可能會提供更好的答案。該類圖取決於WSDL文件中的類型定義。