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.

/*
 * This example is based on the XML-RPC client library
 * included in the Zend Framework
 */

  require_once 'Zend/XmlRpc/Client.php';
  require_once('Zend/Http/Client.php');
  header('Content-type: text/plain');

  //Setup
  $username = 'user';
  $password = 'password';
  $url = 'http://127.0.0.1/endpointxmlrpc';

  //Create client
  $client = new Zend_XmlRpc_Client($url);
  $http_client = new Zend_Http_Client();
  $http_client->setCookieJar();
  $client->setHttpClient($http_client);

  //Start execution
  echo "Server: $url\n";

  // Get Anonymous Session
  echo "Connect: ";
  try {
    $result = $client->call('system.connect');
    echo "OK\n";
  }
  catch (Exception $e) {
    var_dump($e);
  }

  // Do Login to create an authenticate sessionid
  echo "Login: ";
  try {
    $result = $client->call('user.login',array($username, $password));
    echo "OK\n";
    echo "User Details:\n---------\n";
    var_dump($result);
    echo "\n---------\n";
  }
  catch (Exception $e) {
    var_dump($e);
  }

  //Logout
  echo "Logout: ";
  try {
    $result = $client->call('user.logout');
    echo "OK\n";
  }
  catch (Exception $e) {
    var_dump($e);
  }
  echo 'End';