Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Web services

Que votre application XUL soit une ApplisWeb ou desktop, il est possible de dialoguer avec un serveur web, pour entre autre accéder à des services web.

Qu'est ce qu'un service web

Un service web, c'est un service que propose un serveur web. Ce service peut être le stockage de données, l'execution d'un traitement sur le serveur, une demande d'envoi de donnée etc..

Ainsi, un service web permet l'échange de donnée entre un client et un serveur web, en utilisant, puisque c'est du web, HTTP.

Un service web est donc caractérisé :

  • par un URL, qu'il faut appeler pour invoquer le service
  • par un format de donnée, pour envoyer et recevoir les messages, les données entre le serveur et le client
  • par un protocole : spécifie quand envoyer et renvoyer tel ou tel message ou donnée.

Il existe de ce fait plusieurs protocoles, dont certains sont des standards et la plupart utilise un format XML pour les données : SOAP, XML-RPC, Wddx etc..

Vous pouvez aussi définir votre propre format d'échange, qui peut être non xml, et votre propre protocole. La simple récupération d'un contenu dynamique à un URL peut ainsi être considéré comme un service web trés (trés) basique. C'est la méthode plus connue depuis quelques temps sous le nom d'Ajax.

Protocoles inclus dans Mozilla

Programmer l'appel à un service web quelconque

La plateforme Mozilla met à disposition du programmeur, un objet, xmlHttpRequest, qui permet de faire des requêtes HTTP vers un serveur web et de récuperer les données renvoyées (sous forme textuelle ou xml). En clair, vous pouvez faire de l'Ajax (Asynchronous JavaScript and XML).

Voir la page expliquant comment utiliser XmlHttpRequest.

Utiliser d'autres protocoles de services web

Il existe d'autres protocoles de services web. Ils ne sont pas implementé dans Mozilla. Cependant ce n'est pas trés difficile d'utiliser d'autres protocoles. Il suffit pour la plupart :

  1. de construire le "message" d'appel, donc d'encoder les données à envoyer dans le bon format;
  2. d'envoyer ce message en utilisant xmlHttpRequest
  3. de récuperer les données renvoyées par le serveur en réponse, et de les décoder pour être utilisable en javascript.

Il existe des méthodes bibliothèques javascript (utilisant notamment les méthodes escape et unescape) pour l'encodage et le décodage des données, vous avez donc juste la plupart du temps d'appeler ces bibliothèques et d'appeler xmlHttpRequest.

Voici quelques formats utilisés sur le web en plus de SOAP et XML-RPC:

  • WDDX, un format qui décrit une structure de données en xml. Interressant donc pour échanger facilement des objets ou autre données.
  • JSON, similaire à wddx, mais c'est un format textuel trés proche de la notation simplifiée du javascript. Il est donc trés performant dans le cadre d'une application en XUL/Javascript.
  • autre ?

API de haut niveau

Il existe des outils permettant d'invoquer des services web de manière simplifié, cachant toute la mécanique bas niveau (xmlhttprequest &co).

Les templates XUL

N'oubliez pas les templates XUL ! C'est une forme de services Web :

1) Vous indiquez une URL dans le template. 2) Le serveur vous renvoi des données au format RDF 3) Le moteur de template génère les élements XML indiqués dans le template avec les données reçues.

La source de données RDF peut être issue d'un fichier statique, mais peut être aussi générée dynamiquement par le serveur. Voir cet exemple de génération de fichier RDF en PHP

Des formulaires XUL similaires à HTML

Vous pouvez utiliser serverpost, un composant XBL qui prend en charge les requetes HTTP et permet de faire des formulaires facilement, comme en HTML, en méthode POST. Cela propose donc un composant XBL qui est un bouton "valider". Il faut aussi indiquer les composants XUL dont leur valeur sera transmise au serveur, en leur ajoutant un attribut specifique. Sur le clic du bouton valider, serverpost récupère les données des composants XUL marqués et les envoi au serveur avec la méthode POST. Vous pouvez définir aussi le code à éxecuter aprés envoi (changement de page etc..)

jpspan

C'est un framework permettant de partager des objets entre le serveur et le client, de manière transparente. http://jpspan.sourceforge.net/


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.