Cours 8 : Les Web Services et XML-RPC Février 2016 - Version 1.0 - Les technologies XML Cours 8 : Les Web Services et XML-RPC Février 2016 - Version 1.0 -
La première approche Web Service a été XML-RPC. L’idée : 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 : Envoyer un document XML Le traiter sur le serveur (éventuellement effectuer des actions) Renvoyer en réponse un autre document XML que le client peut traiter.
Remote Procedure Call (RPC) XML RPC : http://www.xmlrpc.com/spec 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é
Web Services – XML RPC Types de données <!ELEMENT i4 (#PCDATA)> 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 )> I4 et int sont équivalent. Lorsque le type n’est pas indiqué on prend le type string par défaut.
<!ELEMENT methodCall (methodName, params)> Web 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)> l’élément fault contient un code qui est un int et une représentation textuelle (format string)
Web Services – XML RPC Exemple de requête POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT) Host: betty.userland.com Content-Type: text/xml Content-length: 181 <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param> </params> </methodCall>
Il n’y a pas de limite au nombre de paramètre Web Services – XML RPC methodName 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.
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: UserLand Frontier/5.1.2-WinNT <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value></param> </params> </methodResponse>
Le code retour http doit être 200 sauf en cas d’erreur http. 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é. methodResponse peut contenir soit un élément <params> soit un élément <fault> <params> ne peut contenir qu’un unique <param>
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: 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>
Web Services – XML RPC 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 !!
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.
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.
Web Services – XML RPC Quelques Implémentations (http://www.xmlrpc.com/directory/1568/implementations) Apache : http://ws.apache.org/xmlrpc/