XML-RPC
22-23 DEV. APP. REP MPDS1
Introduction
Introduction
Introduction
Introduction
Introduction
Rôle du XML dans l’entreprise
La circulation des données est courante dans une entreprise
Avec l’avènement du Web, l’idée d’invoquer des services sur
http s’est développée.
XML joue un rôle important en garantissant un contexte
universel compréhensible sur la plupart des plates-formes et
par différents langages de programmation.
La première approche Web Service a été XML-RPC.
L’idée :
1. Envoyer un document XML
2. Le traiter sur le serveur (éventuellement effectuer des actions)
3. Renvoyer en réponse un autre document XML que le client peut
traiter.
XML-RPC
RPC (Remote Procedure Call) est une technologie qui sert
à invoquer une routine distante sans que le développeur
ait besoin de détailler les échanges nécessaires.
XML-RPC joue le même rôle en s’appuyant sur
l’universalité de XML.
La technologie XML-RPC repose sur XML pour le
stockage des données et sur HTTP
pour le transport
XML-RPC types de donnée
Types de données
Type de base
<!ELEMENT i4 (#PCDATA)>
<!ELEMENT int (#PCDATA)>
<!ELEMENT boolean (#PCDATA)>
<!ELEMENT string (#PCDATA)>
<!ELEMENT double (#PCDATA)>
<!ELEMENT dateTime.iso8601 (#PCDATA)>
<!ELEMENT base64 (#PCDATA)>
<!ELEMENT nil (EMPTY)>
Tableau
<!ELEMENT array (data)>
<!ELEMENT data (value*)>
Structure
<!ELEMENT struct (member*)>
<!ELEMENT member (name, value)>
<!ELEMENT name (#PCDATA)>
Récursion
<!ELEMENT value ( i4 | int | boolean | string | dateTime.iso8601| double | base64 |
struct | array )>
XML-RPC types de donnée
Tableau :
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Une valeur</string></value>
<value><i4>1</i4></value>
</data>
</array>
Base64 (pour le binaire ) :
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
Booléen :
<boolean>1</boolean>
Date/Heure :
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
Décimal :
<double>-12.53</double>
Entier :
<int>42</int>
Chaîne :
<string>Hello world!</string>
XML-RPC Appel et Réponse
Requête
<!ELEMENT methodCall (methodName, params)>
<!ELEMENT methodName(#PCDATA)>
<!ELEMENT params (param*)>
<!ELEMENT param(value)>
Réponse
<!ELEMENT methodResponse(params|fault)>
<!ELEMENT fault (value)>
Fault
<!ELEMENT fault (faultCode,faultString)>
<!ELEMENT faultCode(#PCDATA)>
<!ELEMENT faultString(#PCDATA)>
XML-RPC Appel et Réponse
Requête
<?xml version="1.0"?>
<methodCall> <methodName>[Link]</methodName>
<params> <param> <value><i4>77000</i4></value> </param> </params>
</methodCall>
Réponse
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>Melun</string></value>
</param>
</params>
</methodResponse>
XML-RPC Appel et Réponse
Le code retour http doit être 200 sauf en cas
d’erreur http.
Le reste des headers http doit être correctement
valorisé.
methodResponse peut contenir soit un élément
<params> soit un élément <fault>
<params> ne peut contenir qu’un unique <param>
XML-RPC Appel et Réponse
Exemple de réponse en erreur
HTTP/1.1 200 OK
Connection: close
Content-Length: 426
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:02 GMT
Server: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?>
<methodResponse>
<fault> <value>
<struct>
<member><name>faultCode</name> <value><int>4</int></value> </member>
<member> <name>faultString</name> <value><string>Too many
parameters.</string></value> </member>
</struct>
</value> </fault>
</methodResponse>
XML-RPC Appel et Réponse
Les « faultCode » ne sont pas normalisés et leur
signification doit être diffusée au client pour qu’il
puisse les interpréter
Dans le cas ou le retour est un élément <fault> le
retour http peut être 200 !!