Drupal Services 3 - XML-RPC Session Autentication con Zend Framework

Questo piccolo esempio cerca di riassumere cosa deve fare un client XML-RPC per sfruttare le risorse esposte da un server XML-RPC creato con Services 3.x .
Il server in questione richiede l'autenticazione della sessione come metodo di accesso, pertanto il client dovrà effettuare un login con un utente di Drupal e poi sfruttare la sessione autenticata per utilizzare le risorse.
Il client per semplicità è stato creato utilizzando Zend Framework.

  1. /*
  2.  * This example is based on the XML-RPC client library
  3.  * included in the Zend Framework
  4.  */
  5.   require_once 'Zend/XmlRpc/Client.php';
  6.   require_once('Zend/Http/Client.php');
  7.   header('Content-type: text/plain');
  8.  
  9.   //Setup
  10.   $username = 'user';
  11.   $password = 'password';
  12.  
  13.   //Create client
  14.   $client = new Zend_XmlRpc_Client($url);
  15.   $http_client = new Zend_Http_Client();
  16.   $http_client->setCookieJar();
  17.   $client->setHttpClient($http_client);
  18.  
  19.   //Start execution
  20.   echo "Server: $url\n";
  21.  
  22.         // Get Anonymous Session
  23.         echo "Connect: ";
  24.         try {
  25.                 $result = $client->call('system.connect');
  26.     echo "OK\n";
  27.   }
  28.   catch (Exception $e) {
  29.                 var_dump($e);
  30.         }
  31.  
  32.   // Do Login to create an authenticate sessionid
  33.         echo "Login: ";
  34.         try {
  35.                 $result = $client->call('user.login',array($username, $password));
  36.     echo "OK\n";
  37.     echo "User Details:\n---------\n";
  38.     var_dump($result);
  39.     echo "\n---------\n";
  40.   }
  41.   catch (Exception $e) {
  42.                 var_dump($e);
  43.         }
  44.  
  45.   //Logout
  46.         echo "Logout: ";
  47.         try {
  48.                 $result = $client->call('user.logout');
  49.     echo "OK\n";
  50.         }
  51.   catch (Exception $e) {
  52.                 var_dump($e);
  53.         }
  54.   echo 'End';

Share this post