Professional Documents
Culture Documents
SOAP : Communiquer
Mickal BARON 2010 (Rv. Janvier 2011) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
Licence
Creative Commons
Contrat Paternit Partage des Conditions Initiales l'Identique
2.0 France
keulkeul.blogspot.com
http://creativecommons.org/licenses/by-sa/2.0/fr
SOAP - M. Baron - Page 2
Plan du cours
Gnralits SOAP SOAP par lexemple : HelloWorld service Structure dun message SOAP En tte dun message SOAP (header) Corps dun message SOAP (body)
keulkeul.blogspot.com
Logiciels utiliss
Navigateur Web, SOAP UI
Ceci est une astuce
keulkeul.blogspot.com
Pr-requis
Ingnierie des donnes, Schema XML, WSDL
Ceci est une alerte
Remerciements
TODO
SOAP - M. Baron - Page 4
Ressources Articles
www.w3.org/TR/soap/ www.ibm.com/developerworks/xml/library/x-soapbx2/index.html www.soapui.org fr.wikipedia.org/wiki/SOAP
Cours
keulkeul.blogspot.com
Gnralits SOAP SOAP est un protocole de communication entre application bas sur le langage XML Initialement SOAP dsignait lacronyme de Simple Object Access Protocol Qui est derrire SOAP (Microsoft et IBM) Objectifs viss
Assurer la communication entre applications dune mme entreprise (intranet) Assurer les changes interentreprises entre applications et services Web
keulkeul.blogspot.com
Spcification du W3C
SOAP 1.1 : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ SOAP 1.2 : http://www.w3.org/TR/soap12/
Comparaison
keulkeul.blogspot.com
Entreprise A interroge lannuaire UDDI pour obtenir une liste de Services Web rpondant ces exigences
2 3
1
Entreprise A tlcharge les documents qui dcrivent les Services Web (WSDL)
Entreprise B publie ses Services Web quelle implmente dans un annuaire UDDI (transmet les WSDLs)
Entreprise A envoie des messages SOAP conformes aux WSDL pour invoquer les Services Web de B
keulkeul.blogspot.com
4 5
Do you speak SOAP ? Pour lire et crire du SOAP, les pr-requis sont
XML XML Schema
Le pour
Utile pour dbugger une application Utile pour raliser des tests via SOAP UI Intercepter les messages bas niveau SOAP (via les handlers)
keulkeul.blogspot.com
Le contre
Les APIs fournissent une abstraction des messages SOAP
SOAP - M. Baron - Page 10
Concepts dun message SOAP Les messages SOAP sont utiliss pour envoyer (requte) et recevoir (rponse) des informations dun rcepteur Un message SOAP peut tre transmis plusieurs rcepteurs intermdiaires avant dtre reu par le rcepteur final (~ chane de responsabilit) Le format SOAP peut contenir des messages spcifiques
keulkeul.blogspot.com
correspondant des erreurs identifies par le rcepteur Un message SOAP est vhicul vers le rcepteur en utilisant un protocole de transport (HTTP, SMTP, )
SOAP - M. Baron - Page 11
SOAP par lexemple : Requte vers le service HelloWorld Exemple : Appeler les oprations du service HelloWorld
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <hel:makeHelloWorld> <value>Mickael BARON</value> </hel:makeHelloWorld> </soapenv:Body> </soapenv:Envelope>
keulkeul.blogspot.com
SOAP par lexemple : Rponse du service HelloWorld Exemple (suite) : Message retour de lappel des oprations du service HelloWorld
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:makeHelloWorldResponse xmlns:ns2="http://helloworldwebservice.lisi.ensma.fr/"> <helloWorldResult>Hello World to Mickael BARON</helloWorldResult> </ns2:makeHelloWorldResponse> </soapenv:Body> </soapenv:Envelope>
keulkeul.blogspot.com
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:simpleHelloWorldResponse xmlns:ns2="http://helloworldwebservice.lisi.ensma.fr/"> <helloWorldResult>Hello World to everybody</helloWorldResult> </ns2:simpleHelloWorldResponse> </soapenv:Body> </soapenv:Envelope>
Structure dun message SOAP Un message SOAP est un document XML constitu dune enveloppe compose de deux parties
Un en-tte (header) qui peut tre facultatif Un corps (body)
keulkeul.blogspot.com
Enveloppe SOAP
SOAP - M. Baron - Page 14
Lenveloppe SOAP Lenveloppe est la racine dun message SOAP identifie par la balise <soapenv:Enveloppe> La spcification impose que la balise et les sous balises soient explicitement associes un namespace La spcification SOAP dfinit deux namespaces
SOAP-ENV ou soapenv : http://schemas.xmlsoap.org/soap/envelope/ SOAP-ENC : http://schemas.xmlsoap.org/soap/encoding/
En-tte SOAP Len-tte dun message SOAP est utilis pour transmettre des informations supplmentaires sur ce mme message Len-tte est dfini par la balise <SOAP-ENV:Header>
Llment peut tre facultatif Doit tre plac avant le corps
Pour certains protocole de transport (FTP par exemple), len-tte peut tre utilis pour identifier lmetteur du message
Un message SOAP peut transiter par plusieurs intermdiaires avant le traitement par le rcepteur final
Pattern Chane de responsabilit Zone lecture / crite par les intermdiaires
SOAP - M. Baron - Page 16
En-tte SOAP En-tte dans une srie de transferts successifs de message SOAP
Emetteur du message SOAP
<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise1 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ... > </balise1> <balise2> </balise2> <balise3> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>
<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise2 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ...> </balise2> <balise3> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>
<SOAP-ENV:Envelope ...> <SOAP-ENV:Header> <balise3 SOAP-ENV:Actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" ...> </balise3> </SOAP-ENV:Header> ... </SOAP-ENV:Envelope>
Corps SOAP Le corps dun message SOAP est constitu par un lment
<SOAP-ENV:Body>
Llment <SOAP-ENV:Body> peut contenir soit
Une erreur en rponse une requte (lment <SOAP-ENV:Fault>) Des informations adresses au destinataire du message SOAP respectant un encodage dtermin
Lencodage des informations est prcis par les bindings du document WSDL
keulkeul.blogspot.com
Pour faire simple nous utiliserons les services Web dans le cadre de lappel une procdure distante
SOAP - M. Baron - Page 18
Corps SOAP Lobjectif vis par SOAP a t de fournir un mcanisme standardis pour lappel de procdures distant (RPC) De ce fait les informations adresses au destinataire de messages SOAP doivent respectes un certain nombre de convention Appel dune opration reprsente par une struct
Le nom de la structure est celui de lopration appeler Chaque paramtre de lopration est dfini comme un sous lment de la structure
keulkeul.blogspot.com
Si un paramtre est un type complexe (Person par exemple) une nouvelle structure est dfinie contenant son tour des sous lments
Corps SOAP Exemple : corps de messages SOAP pour appeler des oprations du service Web Notebook
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithSimpleType> <name>BARON Mickael</name> <address>Poitiers</address> <birthyear>17081976</birthyear> </not:addPersonWithSimpleType> </soapenv:Body> </soapenv:Envelope>
addPersonWithComplexType
keulkeul.blogspot.com
Trois paramtres
SOAP - M. Baron - Page 20
Corps SOAP Exemple : corps de messages SOAP pour le rsultat des oprations du service Web Notebook
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.lisi.ensma.fr/"> <addPersonWithComplexTypeResult>true</addPersonWithComplexTypeResult> </ns2:addPersonWithComplexTypeResponse> </soapenv:Body> </soapenv:Envelope>
Messages SOAP pour la rponse puisque les noms des oprations sont suivis de Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithSimpleTypeResponse xmlns:ns2="http://notebookwebservice.lisi.ensma.fr/"> <addPersonWithSimpleTypeResult>true</addPersonWithSimpleTypeResult> </ns2:addPersonWithSimpleTypeResponse> </soapenv:Body> </soapenv:Envelope>
keulkeul.blogspot.com
Les paramtres de sorties suivent la mme convention que les paramtres dentrs
SOAP transport par HTTP SOAP utilise un protocole de transport pour vhiculer les messages SOAP de lmetteur au rcepteur
HTTP, SMTP, FTP, POP3 et NNTP
keulkeul.blogspot.com
Si code de type 2xx, message SOAP reu Si code 500, message en erreur, le corps SOAP doit contenir fault
Conteneur Web
keulkeul.blogspot.com
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithComplexType> <newPerson> <address>Poitiers</address> <birthyear>17081976</birthyear> <name>BARON Mickael</name> </newPerson> </not:addPersonWithComplexType> </soapenv:Body> </soapenv:Envelope>
Java
.NET
C++
PHP
SOAP UI : outil graphique de tests de Service Web SOAP UI est un outil pour tester des Services Web
www.soapui.org
Disponible pour en standalone ou intgr dans les environnements de dveloppement (Eclipse, Intellij, Netbeans, Maven, ) Peut sutiliser pour nimporte quelle plateforme de dveloppement
Fonctionnalits de SOAP UI
Supporte les Services Web tendus (WSDL + SOAP + UDDI) ou REST Inspecter des Services Web
keulkeul.blogspot.com
Invoquer des Services Web Dvelopper des Services Web Simuler des Services Web via des bouchons (mocks) Effectuer des tests qualits (temps de rponse, ) SOAP
- M. Baron - Page 25
keulkeul.blogspot.com