Mozilla vous permet d'effectuer des appels de services web en xml-rpc.
Bien sûr, les messages XML ont un format précis, normalisée. Pour en savoir plus sur le format, lire les spécifications de XML-RPC ou en version française.
Cependant, vous n'avez pas besoin de connaître le format. Des composants XPCom (réalisé en Javascript) se chargent de formater les messages, de faire les appels et de recevoir la reponse.
Il y a trois interfaces disponibles :
Elles sont implémentées dans les composants @mozilla.org/xml-rpc/client;1 et @mozilla.org/xml-rpc/fault;1
Comme c'est réalisé en javascript, vous pouvez regarder leur code source dans <votre repertoire mozilla>/components/nsXmlRpcClient.js. Disponible également en ligne http://mozblog.mozdev.org/nsXmlRpcClient(..).
La référence des interfaces et des composants sont disponibles sur xulplanet :
Vous avez un excellent petit tutoriel sur phpPattern : http://www.phppatterns.com/index.php/art(..)
Voici en résumé comment on fait :
var xmlRpcClient;
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
xmlRpcClient = Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(
Components.interfaces.nsIXmlRpcClient);
xmlRpcClient.init('http://lesite.com/service_rpc.php');
Il faut déclarer un objet handler qui sera appelé pour traiter les divers évenements qui vont survenir durant l'appel. Il doit contenir trois méthodes :
var monHandler = {
// Param0: l'objet xmlrpcclient
// Param1: le paramètre arg1 de asyncCall (voir plus loin)
// Param2: le résultat xmlrpc
onResult: function(client, argumentAsyncall, resultat) {
... // ici traitement du résultat
},
// Param0: l'objet xmlrpcclient
// Param1: le paramètre arg1 de asyncCall (voir plus loin)
// Param2: la chaine erreur
onFault: function (client, argumentAsyncall, faute) {
alert('faute XML-RPC : '+faute);
},
// Param0: l'objet xmlrpcclient
// Param1: le paramètre arg1 de asyncCall (voir plus loin)
// Param2: code statut XPCOM
// Param3: message d'erreur
onError: function (client, argumentAsyncall, status, errorMsg) {
alert('Error: '+erreurMsg);
}
};
Il se peut que vous ayez des paramètres à indiquer à la méthode xmlrpc. Pour cela, il va falloir créer ces paramètres en indiquant leur type.
Ici, on crée un argument de type chaine et un autre de type entier :
var parametre1 = xmlRpcClient.createType(xmlRpcClient.STRING,{});
parametre1.data='test';
var parametre2 = xmlRpcClient.createType(xmlRpcClient.INT,{});
parametre2.data=2;
D'autres types existent :
xmlRpcClient.asyncCall(arg0, arg1, arg2, arg3, arg4);
exemple :
xmlRpcClient.asyncCall(monHandler, null, 'testRPC', [parametre1, parametre2], 2);
On appelle la méthode xmlrpc 'testRPC', en lui passant 2 paramètres, parametre1 et parametre2, en spécifiant que la réponse sera traité par l'objet monHandler déclaré plus haut (et il ne recevra pas de paramètre puisque arg2 est à null).
Pour utiliser du XML-RPC sans avoir besoin des privilèges chrome, on peut utiliser des bibliothèques externes en javascript, reposant sur xmlHttpRequest. Comme celle-ci : http://scottandrew.com/xml-rpc/
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.