Les technologies XML Cours 8 Les Web Services
Les technologies XML Cours 8 : Les Web Services et XMLRPC Février 2016 - Version 1. 0 - 1
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é XMLRPC. 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. 2
Web 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é 3
Web Services – XML RPC Types de données Type de base <!ELEMENT <!ELEMENT i 4 (#PCDATA)> int (#PCDATA)> boolean (#PCDATA)> string (#PCDATA)> double (#PCDATA)> date. Time. iso 8601 (#PCDATA)> base 64 (#PCDATA)> nil (EMPTY)> Tableau <!ELEMENT array (data)> <!ELEMENT data (value*)> Structure <!ELEMENT struct (member*)> <!ELEMENT member (name, value)> <!ELEMENT name (#PCDATA)> Récursion <!ELEMENT value ( i 4 | int | boolean | string | date. Time. iso 8601| double | base 64 | struct | array )> 4
Web Services – XML RPC Requête <!ELEMENT Réponse <!ELEMENT Fault <!ELEMENT method. Call (method. Name, params)> method. Name(#PCDATA)> params (param*)> param(value)> method. Response(params|fault)> fault (value)> fault (fault. Code, fault. String)> fault. Code(#PCDATA)> fault. String(#PCDATA)> 5
Web Services – XML RPC Exemple de requête POST /RPC 2 HTTP/1. 0 User-Agent: Frontier/5. 1. 2 (Win. NT) Host: betty. userland. com Content-Type: text/xml Content-length: 181 <? xml version="1. 0"? > <method. Call> <method. Name>examples. get. State. Name</method. Name> <params> <param> <value><i 4>41</i 4></value> </params> </method. Call> 6
Web Services – XML RPC method. Name peut être interprété à la convenance du serveur. Cela peut être un script à lancer sur le document XML, une méthode Java … Il n’y a pas de limite au nombre de paramètre Il n’est pas possible à la lecture du document de savoir ce qui va réellement être fait par le serveur. 7
Web Services – XML RPC Exemple de réponse HTTP/1. 1 200 OK Connection: close Content-Length: 158 Content-Type: text/xml Date: Fri, 17 Jul 1998 19: 55: 08 GMT Server: User. Land Frontier/5. 1. 2 -Win. NT <? xml version="1. 0"? > <method. Response> <params> <param> <value><string>South Dakota</string></value></param> </params> </method. Response> 8
Web Services – XML RPC Le code retour http doit être 200 sauf en cas d’erreur http. Le reste des headers http doit être correctement valorisé. method. Response peut contenir soit un élément <params> soit un élément <fault> <params> ne peut contenir qu’un unique <param> 9
Web Services – XML RPC 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: User. Land Frontier/5. 1. 2 -Win. NT <? xml version="1. 0"? > <method. Response> <fault> <value> <struct> <member><name>fault. Code</name> <value><int>4</int></value> </member> <name>fault. String</name> <value><string>Too many parameters. </string></value> </member> </struct> </value> </fault> </method. Response> 10
Web Services – XML RPC Les « fault. Code » 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 !! 11
Web Services – XML RPC Conclusion 1/2 XML RPC est simple à implémenter et permet d’exposer rapidement des services sur le net. Il est difficile de savoir ce que fait réellement un service. Il n’y a pas dans la spécification de notion de sécurité : tout est envoyé en clair. Les différentes implémentations d’XML RPC ont « étendues » les spécifications et donc ne sont pas toujours interopérables. 12
Web Services – XML RPC Conclusion 2/2 L’approche XML-RPC n’est quasiment plus utilisée en entreprise du fait du manque de sécurité du protocole Elle n’a pas été retenue dans l’implémentation de la nouvelle pile JEE 5. 13
Web Services – XML RPC Quelques Implémentations (http: //www. xmlrpc. com/directory/1568/implementations) Apache : http: //ws. apache. org/xmlrpc/ 14
- Slides: 14