2010-10-18 27 views
2

Je tente d'obtenir des valeurs à partir d'un service Web.PHP SoapClient - Renvoi des valeurs d'attribut dans une réponse

Le responce est formatté comme ..

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

Code PHP

SoapClient("WSDL"); 

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

Pourtant, lorsque je tente d'accéder au retour, je reçois juste un stdClass avec l'attribut name ..

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

http://www.php.net/manual/en/soapclient.getlastresponse.php cela aidera-t-il – zod

+0

Est-ce la sortie complète d'une instruction 'var_dump ($ return)'? – thetaiko

+0

Oui - dans ce cas oui. –

Répondre

2

Je trouve que je dois fournir un "classmap" à SoapClient pour l'amener à mapper les objets dans la réponse aux classes qui sont d défini en PHP. Dans les WSDL, le nom du type est généralement le cas du chameau inférieur (en commençant par les minuscules et les chameaux le reste).

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(); 

Je pourrais être en mesure de fournir une meilleure réponse si j'avais le WSDL. Le classmap dépend des définitions de type dans le fichier WSDL.