XML-RPC - Format de demande

Les requêtes XML-RPC sont une combinaison de contenu XML et d'en-têtes HTTP. Le contenu XML utilise la structure de typage des données pour transmettre des paramètres et contient des informations supplémentaires identifiant la procédure appelée, tandis que les en-têtes HTTP fournissent un wrapper pour transmettre la requête sur le Web.

Chaque requête contient un seul document XML, dont l'élément racine est un élément methodCall . Chaque élément methodCall contient un élément methodName et un élément params . L' élément methodName identifie le nom de la procédure à appeler, tandis que l' élément params contient une liste de paramètres et leurs valeurs. Chaque élément params comprend une liste d'éléments param qui à leur tour contiennent des éléments value .

Par exemple, pour passer une requête à une méthode appelée circleArea , qui prend un paramètre Double (pour le rayon), la requête XML-RPC ressemblerait à ceci:

<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>

Les en-têtes HTTP de ces demandes refléteront les expéditeurs et le contenu. Le modèle de base se présente comme suit:

POST /target HTTP 1.0
User-Agent: Identifier
Host: host.making.request
Content-Type: text/xml
Content-Length: length of request in bytes

Par exemple, si la méthode circleArea était disponible à partir d'un serveur XML-RPC écoutant sur / xmlrpc , la requête pourrait ressembler à ceci :

POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169

Assemblé, la demande entière ressemblerait à:

POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: 192.168.124.2
Content-Type: text/xml
Content-Length: 169
<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>

C'est une requête HTTP ordinaire, avec une charge utile soigneusement construite.