Aller au contenu

XML-RPC

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 13 avril 2025 à 20:52 et modifiée en dernier par Gturri (discuter | contributions) (correction de l'affichage des blocs de code). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

XML-RPC est un protocole RPC (remote procedure call), une spécification simple et un ensemble de codes qui permettent à des processus s'exécutant dans des environnements différents de faire des appels de méthodes à travers un réseau.

Ce protocole a été élaboré et publié dans sa première version en 1998 par Dave Winer, travaillant pour UserLand Software[1], en collaboration avec Microsoft[2].

XML-RPC permet d'appeler une fonction sur un serveur distant à partir de n'importe quel système (Windows, Mac OS X, GNU/Linux) et avec n'importe quel langage de programmation. Le serveur est lui-même sur n'importe quel système et est programmé dans n'importe quel langage.

Cela permet de fournir un service web utilisable par tout le monde sans restriction de système ou de langage.

Les processus d'invocation à distance utilisent le protocole HTTP pour le transfert des données et la norme XML pour la structuration des données.

XML-RPC est conçu pour permettre à des structures de données complexes d'être transmises, exécutées et renvoyées très facilement.

XML-RPC est une alternative aux services web WS-*, dont SOAP.

Usage[3]

Pour effectuer un appel XML-RPC, un client doit effectuer une requête POST de type text/xml avec un corps qui précise la méthode distante invoquée, et, s'il y en a, les paramètres à passer à cette méthode.

Le serveur XML-RPC doit renvoyer une réponse avec le code "200 OK", le type text/xml, et un corps qui peut contenir un unique paramètre. En cas d'erreur le corps peut à la place contenir une description de l'erreur. Une erreur est représentée par un code d'erreur sous forme d'un entier, et d'un message d'erreur sous forme de chaîne de caractères.

Exemple

Imaginons un serveur xml-rpc qui comporterait une méthode genereUnMessageDeSalutation qui prend comme paramètre un nom et qui retour un message de salutation en conséquence. Une requête pour invoquer cette méthode aurait le corps

<?xml version="1.0"?>
<methodCall>
    <methodName>genereUnMessageDeSalutation</methodName>
    <params>
        <param>
            <value><string>Paul</string></value>
        </param>
    </params>
</methodCall>

et la réponse ressemblerait à

<?xml version="1.0"?>
<methodResponse>
    <params>
        <param>
            <value><string>Bonjour Paul</string></value>
        </param>
    </params>
</methodResponse>

Les types de données qui existent dans la spécification xml-rpc sont :

Nom Exemple Commentaire
Entier
<i4>-666</i4>
ou
<int>-666</int>
Entier signé sur 4 bytes
Booléen
<boolean>0</boolean>
ou
<boolean>1</boolean>
0 représente l'état "faux", 1 représente l'état "vrai"
Chaîne de caractères
<string>Toto</string>
Nombre à virgule
<double>-13.12</double>
double signé
Date et heure
<dateTime.iso8601>2025-04-13T20:06:52</dateTime.iso8601>
Date et heure au format ISO 8601
Données binaires
<base64>dW4gdGV4dGUgc2FucyBpbnTDqXLDqnQ=</base64>
Donées binaires encodées en base64
Structure de données
<struct>
  <member>
    <name>nom</name>
    <value><string>Toto</string></value>
  </member>
  <member>
    <name>age</name>
    <value><i4>18</i4></value>
  </member>
</struct>
Chaque membre de la structure de données a un nom et une valeur.

Un membre peut être de n'importe quel type. Il peut aussi être lui même une structure de données

Tableau
<array>
  <data>
    <value><string>Toto</string></value>
    <value><i4>18</i4></value>
  </data>
</array>
Les types de valeur du tableau peuvent de n'importe quel type et peuvent être hétérogènes

Références

  1. (en) Dave Winer, « Home », (consulté le )
  2. (en) Dave Winer, « XML-RPC for Newbies », 14/07.1998 (consulté le )
  3. (en) « XML-RPC Specification » (consulté le )

Liens externes