0% ont trouvé ce document utile (0 vote)
4 vues32 pages

If XMLRPC

XML-RPC est un protocole basé sur XML pour l'échange d'informations entre ordinateurs via HTTP, permettant l'appel de procédures distantes avec un vocabulaire XML simple. Il définit des types de données de base et complexes, et utilise des requêtes et réponses structurées en XML pour communiquer entre clients et serveurs. Le document présente également des exemples de requêtes et de réponses, ainsi que des instructions pour créer un serveur et un client en Java.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues32 pages

If XMLRPC

XML-RPC est un protocole basé sur XML pour l'échange d'informations entre ordinateurs via HTTP, permettant l'appel de procédures distantes avec un vocabulaire XML simple. Il définit des types de données de base et complexes, et utilise des requêtes et réponses structurées en XML pour communiquer entre clients et serveurs. Le document présente également des exemples de requêtes et de réponses, ainsi que des instructions pour créer un serveur et un client en Java.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

XML-RPC

Contenu: Caractéristiques,
Modèle de données, Requêtes,
Réponses, Erreurs, Exemple
TP1.
[Link], DGI/ESP/UCAD/SN
Janvier 2016 1
Caractéristiques
n XML-RPC est un protocole basé dur XML
pour l’échange d’information entre ordinateur
à travers le réseaux
n Peut être considéré comme l’une des
approches de Services Web les plus simples
permettant l’appel de procédures distantes
n Utilise le protocole HTTP pour passer de
l’information d’un client à un serveur
n Utilise un petit vocabulaire XML pour décrire
la nature des requêtes et des réponses
2
Caractéristiques
n Un client spécifie le nom d’une procédure et ses
paramètres dans une requête XML, et le serveur
retourne une faute ou une réponse dans une
réponse XML
n Les paramètres sont une simple liste de types et
de contenus
¨ Les
structures et les tableaux sont les typles les plus
complexes disponibles
n Pas de notion d’objets et aucun mécanisme
permettant d’inclure de l’information utilisant un
autre vocabulaire
n Publié en 1998 par UserLand Software qui l’a
initialement implémenté dans Frontier.
3
Caractéristiques
n Permettre de facilement intégrer des
environnements de traitement différents n’utilisant
pas des structures de données complexes
¨ Permettre,
par exemple, à Java de parler à du Perl,
Python, ASP, etc.
n Permettre, au sein d’un même environnement, de
connecter des programmes exploitant des
modèles de données différents
n Offrir aux intégrateur une opportunité d’utiliser un
vocabulaire standard pour l’échange d’information

4
Le modèle de données
n La spécification XML-RPC définit
¨ 6 types de données de base
n int ou i4, double, boolean, string,
dateTime.iso8601, base64
¨ et 2 types complexes
n array, struct

5
Le modèle de données
n Les 6 types de base
Types Valeurs Exemples
int ou i4 entiers sur 32 bit <int>27</int>
entre -2,147,483,648 <i4>27</i4>
et 2,147,483,647.
double nombres en virgule <double>27.31415</double>
flottante sur 64 bit <double>-1.1465</double>

boolean true (1) ou false (0) <boolean>1</boolean>


<boolean>0</boolean>

… … …

6
Le modèle de données
n Les 6 types de base
Types Valeurs Exemples
string Texte ASCII (certaines <string>Hello</string>
implém supporte <string>folks! @</string>
l’Unicode)
dateTime.iso8601 Dates au format <dateTime.iso8601>
ISO8601: 20021125T02:20:04
CCYYMMDDTHH:MM: </dateTime.iso8601>
SS <dateTime.iso8601>
20020104T17:27:30
</dateTime.iso8601>

base64 Information binaire <base64>


encodée en Base 64, SGVsbG8sIFdvcmxkIQ==
comme défini dans la </base64>
RFC 2045
7
Le modèle de données
n Les types de base
¨ Ils sont toujours contenus dans un élément
<value>
¨ Les string peuvent être contenues dans un
élément <value> en ométant l’élément
<string>

8
Le modèle de données
n Les tableaux
¨ Informations séquentielles
¨ Contenus dans un élément <array> qui
contien un élément <data> qui à son tour
contien un ensemble d’éléments <value> qui
eux contiennent les éléments du tableau
¨ Comme les autres éléments, un élément
<array> est contenu dans un élément <value>

9
Le modèle de données
n Un tableau de 4 string
<value>
<array>
<data>
<value><string>This </string></value>
<value><string>is </string></value>
<value><string>an </string></value>
<value><string>array.</string></value>
</data>
</array>
</value>
10
Le modèle de données
n Un tableau de 3 entiers
<value>
<array>
<data>
<value><int>7</int></value>
<value><int>1247</int></value>
<value><int>-91</int></value>
</data>
</array>
</value>

11
Le modèle de données
n Un tableau à valeurs de types mixtes
<value>
<array>
<data>
<value><boolean>1</boolean></value>
<value><string>ESP</string></value>
<value><int>7</int></value>
<value><double>1247.34578</double></value>
<value><int>-91</int></value>
</data>
</array>
</value>
12
Le modèle de données
n Un tableau multidimensionnel
<value>
<array>
<data>
<value>
<array>
<data>
<value><int>1</int></value>
<value><int>2</int></value>
</data>
</array>
</value>
<value>
<array>
<data>
<value><int>1</int></value>
<value><int>2</int></value>
</data>
</array>
</value>

</data>
</array>
</value> 13
Le modèle de données
n Une structure
<value>
<struct>
<member>
<name>givenName</name>
<value><string>Mamadou</string></value>
</member>
<member>
<name>familyName</name>
<value><string>Camara</string></value>
</member>
</struct>
</value>
14
Le format de requête XML-RPC
n Une requête XML-RPC est une combinaison
¨ de contenu XML
n Nom de la méthode appelée
n Paramètres
¨ et d’entêtes HTTP
n Pour la transmission de la requête sur le Web
n Chaque requête contient un document XML
¨ Racine:<methodCall>
¨ Nom de la méthode: <methodeName>
¨ Chaque paramètre décrit dans un élément
<param>, le tout dans un élément <params>
15
Le format de requête XML-RPC
n Exemple d’une requête d’appel d’une méthode
circleArea prenant comme paramètre le rayon de
type double, le contenu XML ressemble à

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

16
Le format de requête XML-RPC
n Exemple d’une requête d’appel d’une méthode
circleArea prenant comme paramètre le rayon de type
double
n Le contenu XML ressemble à
<?xml version="1.0"?>
<methodCall>
<methodName>circleArea</methodName>
<params>
<param><value><double>2.41</double></value> </param>
</params>
</methodCall>

17
Le format de requête XML-RPC
n Les entêtes HTTP associées à ces requêtes
reflètent le contenu ainsi que le client
n Un template de base
POST /target HTTP 1.x
User-Agent: Identifier
Host: [Link]
Content-Type: text/xml
Content-Length: length of request in bytes

18
Le format de requête XML-RPC
n Exemple: si la méthode circleArea est disponible
sur un serveur écoutant sur /xmlrpc
n L’entête de la requête serait …

POST /xmlrpc HTTP 1.0


User-Agent: myXMLRPCClient/1.0
Host: [Link]
Content-Type: text/xml
Content-Length: 169

19
Le format de requête XML-RPC
n … et la requête globale serait alors
POST /xmlrpc HTTP 1.0
User-Agent: myXMLRPCClient/1.0
Host: [Link]
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>

20
Le format de réponse XML-RPC
n Lorsque que la réponse est un succès …
¨ Méthode trouvée, exécutée correctement, puis retourne un
résultat
n … alors elle ressemble à une requête
¨ Avec un remplacement de l’élément <methodCall> par un
élément <methodResponse> et une omission de l’élément
<methodName>

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><double>18.24668429131</double></value>
</param>
</params>
</methodResponse>
21
Le format de réponse XML-RPC
n Une réponse contient un seul paramètre
¨ Peut être un tableau ou une structure
¨ Il est obligatoire de retourner une valeur dans
une réponse
n Même si c’est un boolean mis à 1 pour indiquer un
succès côté serveur

22
Le format de réponse XML-RPC
n Une réponse contient des entêtes
¨ Toutes les réponses XML-RPC utilisent le
code de réponse 200 OK
n Entêtes types
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
23
Le format de réponse XML-RPC
n La réponse complète
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><double>18.24668429131</double></value>
</param>
</params>
</methodResponse>

24
Les fautes en XML-RPC
n Type de réponse en XML-RPC
¨ En cas de problème dans le traitement d’une requête
n L’élément methodResponse contient un sous-élément
<fault> à la place de <params>
n <fault> contient un seul sous-élément <value>
¨ pour indiquer l’erreur survenue

<?xml version="1.0"?>
<methodResponse>
<fault>
<value><string>No such method!</string></value>
</fault>
</methodResponse>

25
Un exemple en XML-RPC
n Création d’un serveur en Java pouvant
traiter des messages XML-RPC
n Création d’un client Java pour appeler des
procédures sur le serveur
n Implémentation Java utilisée
¨ Le projet Apache XML-RPC de Apache XML
n [Link]
n Autre lien de téléchargement des archives
nécessaires
¨ [Link]
[Link]

26
Un exemple en XML-RPC
n Le client
¨ Appel d’une fonction sum avec 2 paramètres
¨ Renvoie la somme
import [Link].*;
import [Link].*;
public class JavaClient {
public static void main (String [] args) {
try {
XmlRpcClient server = new XmlRpcClient("[Link]
Vector params = new Vector();
[Link](new Integer(17));
[Link](new Integer(13));
Object result = [Link]("[Link]", params);
int sum = ((Integer) result).intValue();
[Link]("The sum is: "+ sum);
}
catch (Exception exception) { [Link]("JavaClient: " + exception); }
}
}
27
Un exemple en XML-RPC
n L’objet XmlRpcClient est construit avec le nom du
serveur Web suivi de /RPC2
n L’appel à [Link](…) produit l’envoi au
serveur de la requête ci-après
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
<methodName>[Link]</methodName>
<params>
<param> <value><int>17</int></value> </param>
<param> <value><int>13</int></value> </param>
</params>
</methodCall>

28
Un exemple en XML-RPC
n Le serveur
import [Link].*;
public class JavaServer {
public Integer sum(int x, int y){ return new Integer(x+y); }
public static void main (String [] args){
try { [Link]("Attempting to start XML-RPC Server...");
WebServer server = new WebServer(80);
[Link]("sample", new JavaServer());
[Link]();
[Link]("Started successfully.");
[Link]("Accepting requests. (Halt program to stop.)");
}
catch (Exception exception){ [Link]("JavaServer: " + exception); }
}
}
29
Un exemple en XML-RPC
n La méthode sum est publique
n Une instance du serveur est associée à un
handler accessible au client
n Pour l’appel précédent, le serveur envoie la
réponse suivante
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodResponse>
<params>
<param> <value><int>30</int></value> </param>
</params>
</methodResponse>

30
TP1: à vous de jouer
n Compiler et exécuter les classes
précédentes de l’exemple
n Concevoir et réaliser le Chatroom (vu en
TP0) avec un XML-RPC en Java
¨ Ressources:
n Codes du TP0
n archives Java (fournies) correspondant à
l’implémentation Apache XML-RPC 2

31
Références bibliographiques
n Livre manuel sur XML-RPC.
¨ [Link]

n XML-RPC Scripting (site officiel)


¨ [Link] Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour
ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à
nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer
l'image avant de la réinsérer.

Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est
endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous
devrez peut-être supprimer l'image avant de la réinsérer.

32

Vous aimerez peut-être aussi