Yii – Créer un webservice SOAP
Voici un petit tutoriel pour créer un webservice de type SOAP avec Yii. Il comprend l’intégration des composants, contrôleurs, vues, règles, du fichier ini…
L’objectif, c’est d’appeler un webservice de la manière suivante :
$client=new SoapClient('http://www.monsite.com/user/ws'); echo $client->add( 'username@mail.net' );
Nous utilisons une route de ce type là dans la conf. Là tout est classique :
'components'=>array( 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( 'user/ws'=> 'user/ws' ), ), ),
Et nous créons le contrôleur « UserController » de manière classique aussi :
class UserController extends CController {}
Nous allons toutefois ajouter avant la déclaration de la classe, mais nous pourrions ajouter cet ini_set dans l’index.php :
ini_set ('soap.wsdl_cache_enabled',0);
Pour que la méthode « ws » de type action soit appelée sous la forme d’un webservice, nous ajoutons :
public function actions() { return array( 'ws'=>array( 'class'=>'CWebServiceAction', ), ); }
Il faut alors pouvoir appeler une méthode « add() « via le webservice, nous l’ajoutons donc :
public function add ($username){ return "username: $username"; }
Mais pour que le service fonctionne, il faut ajouter une chose très importante mais pas évidente, c’est le commentaire de cette méthode :
/** * @param string username * @return string display username * @soap */
Notons que le typage du param et du return est important puisqu’ils sont alors défini dans le wsdl du service soap, mais pour que le wsdl soit généré correctement, il ajouter ce commentaire @soap.
Enfin pour que tout cela fonctionne, il faut ajouter des droits à ce webservice :
public function accessRules(){ return array( array('allow', 'actions' => array('index','view','ws'), 'users' => array('*'), ) ); }
Et voilà, le webservice est maintenant fonctionnel.
Merci beaucoup pour le tuto
bonne explication