1 les technologies xml cours 4 : les web services et xml- rpc février 2011 - version 1.0 -
TRANSCRIPT
1
Les technologies XMLLes technologies XML
Cours 4 : Cours 4 : Les Web Services et XML-Les Web Services et XML-RPCRPC
Février 2011Février 2011
- Version 1.0 - - Version 1.0 -
2
Web Services – XML RPC Web Services – XML RPC
Avec l’avènement du Web, l’idée d’invoquer des services sur http s’est développée.
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.
3
Web Services – XML RPCWeb Services – XML RPC
Remote Procedure Call (RPC)
Sun RPC, CORBA IIOP, Java RMI, MS DCOM ORPC
XML RPC : http://www.xmlrpc.com/spec
Requête-réponse
Méthode POST de HTTP pour le transport
XML pour l’encodage
HTTP/SSL pour la sécurité
4
Web Services – XML RPCWeb Services – XML RPC
Types de donnéesTypes de donnéesType de baseType 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 )>
5
Web Services – XML RPCWeb Services – XML RPC
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)>
6
Web Services – XML RPCWeb Services – XML RPC
Exemple de requêteExemple de requêtePOST /RPC2 HTTP/1.0POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT)User-Agent: Frontier/5.1.2 (WinNT) Host: betty.userland.comHost: betty.userland.com Content-Type: text/xmlContent-Type: text/xml Content-length: 181Content-length: 181
<?xml version="1.0"?><?xml version="1.0"?><methodCall> <methodCall>
<methodName>examples.getStateName</methodName><methodName>examples.getStateName</methodName><params><params>
<param> <value><i4>41</i4></value> </param><param> <value><i4>41</i4></value> </param></params></params>
</methodCall> </methodCall>
7
Web Services – XML RPCWeb Services – XML RPC
methodName peut être interprété à la methodName peut être interprété à la convenance du serveur .Cela peut être un script convenance du serveur .Cela peut être un script à lancer sur le document XML, une méthode Java à lancer sur le document XML, une méthode Java ……
Il n’y a pas de limite au nombre de paramètreIl n’y a pas de limite au nombre de paramètre
Il n’est pas possible à la lecture du document de Il n’est pas possible à la lecture du document de savoir ce qui va réellement être fait par le savoir ce qui va réellement être fait par le serveur.serveur.
8
Web Services – XML RPCWeb Services – XML RPC
Exemple de réponseExemple de réponseHTTP/1.1 200 OKHTTP/1.1 200 OKConnection: close Connection: close Content-Length: 158Content-Length: 158Content-Type: text/xmlContent-Type: text/xmlDate: Fri, 17 Jul 1998 19:55:08 GMTDate: Fri, 17 Jul 1998 19:55:08 GMTServer: UserLand Frontier/5.1.2-WinNTServer: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?><?xml version="1.0"?><methodResponse><methodResponse>
<params><param> <value><string>South
Dakota</string></value></param></params>
</methodResponse> </methodResponse>
9
Web Services – XML RPCWeb Services – XML RPC
Le code retour http doit être 200 sauf en cas Le code retour http doit être 200 sauf en cas d’erreur http.d’erreur http.
Le reste des headers http doit être correctement Le reste des headers http doit être correctement valorisé.valorisé.
methodResponse peut contenir soit un élément methodResponse peut contenir soit un élément <params> soit un élément <fault><params> soit un élément <fault>
<params> ne peut contenir qu’un unique <params> ne peut contenir qu’un unique <param><param>
10
Web Services – XML RPCWeb Services – XML RPC
Exemple de réponse en erreurExemple de réponse en erreurHTTP/1.1 200 OKHTTP/1.1 200 OKConnection: closeConnection: closeContent-Length: 426Content-Length: 426Content-Type: text/xmlContent-Type: text/xmlDate: Fri, 17 Jul 1998 19:55:02 GMTDate: Fri, 17 Jul 1998 19:55:02 GMTServer: UserLand Frontier/5.1.2-WinNTServer: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?><?xml version="1.0"?><methodResponse><methodResponse><fault> <value><fault> <value><struct><struct><member><name>faultCode</name> <value><int>4</int></value> </member><member><name>faultCode</name> <value><int>4</int></value> </member><member> <name>faultString</name> <value><string>Too many <member> <name>faultString</name> <value><string>Too many
parameters.</string></value> </member> parameters.</string></value> </member> </struct></struct></value> </fault></value> </fault></methodResponse> </methodResponse>
11
Web Services – XML RPCWeb Services – XML RPC
Les « faultCode » ne sont pas normalisés et leur Les « faultCode » ne sont pas normalisés et leur signification doit être diffusée au client pour qu’il signification doit être diffusée au client pour qu’il puisse les interpréterpuisse les interpréter
Dans le cas ou le retour est un élément <fault> Dans le cas ou le retour est un élément <fault> le retour http peut être 200 !!le retour http peut être 200 !!
12
Web Services – XML RPCWeb Services – XML RPC
Conclusion 1/2Conclusion 1/2
XML RPC est simple à implémenter et permet XML RPC est simple à implémenter et permet d’exposer rapidement des services sur le net.d’exposer rapidement des services sur le net.
Il est difficile de savoir ce que fait réellement un Il est difficile de savoir ce que fait réellement un service.service.
Il n’y a pas dans la spécification de notion de Il n’y a pas dans la spécification de notion de sécurité : tout est envoyé en clair.sécurité : tout est envoyé en clair.
Les différentes implémentations d’XML RPC ont Les différentes implémentations d’XML RPC ont « étendues » les spécifications et donc ne sont pas « étendues » les spécifications et donc ne sont pas toujours interopérables.toujours interopérables.
13
Web Services – XML RPCWeb Services – XML RPC
Conclusion 2/2Conclusion 2/2
L’approche XML-RPC n’est quasiment plus utilisée L’approche XML-RPC n’est quasiment plus utilisée en entreprise du fait du manque de sécurité du en entreprise du fait du manque de sécurité du protocoleprotocole
Elle n’a pas été retenue dans l’implémentation de Elle n’a pas été retenue dans l’implémentation de la nouvelle pile JEE 5.la nouvelle pile JEE 5.
14
Web Services – XML RPCWeb Services – XML RPC
Quelques Implémentations (Quelques Implémentations (http://www.xmlrpc.com/directory/1568/implementationshttp://www.xmlrpc.com/directory/1568/implementations))
Apache : Apache : http://ws.apache.org/xmlrpc/http://ws.apache.org/xmlrpc/