SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
SOA – Services web étendus
Mickaël BARON – 2010 (Rev. Août 2020)
mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
@mickaelbaron mickael-baron.fr
SOAP : Communiquer
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
2
Creative Commons
Contrat Paternité
Partage des Conditions Initiales à l'Identique
2.0 France
creativecommons.org/licenses/by-sa/2.0/fr
Licence
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
3
À propos de l’auteur …
† Mickaël BARON
† Ingénieur de Recherche au LIAS
† https://www.lias-lab.fr
† Equipe : Ingénierie des Données et des Modèles
† Responsable des plateformes logicielles, « coach » technique
† Ancien responsable Java de Developpez.com (2011-2021)
† Communauté Francophone dédiée au développement informatique
† https://java.developpez.com
† 4 millions de visiteurs uniques et 12 millions de pages vues par mois
† 750 00 membres, 2 000 forums et jusqu'à 5 000 messages par jour
@mickaelbaron
mickael-baron.fr
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
4
Plan du cours
† Généralités SOAP
† SOAP par l’exemple : HelloWorld service
† Structure d’un message SOAP
† En tête d’un message SOAP (header)
† Corps d’un message SOAP (body)
† SOAP et le transport HTTP
† Outil SoapUI
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
5
Déroulement du cours
† Pédagogie du cours
† Des bulles d’aide tout au long du cours
† Survol des principaux concepts en évitant une présentation
exhaustive
† Logiciels utilisés
† Navigateur web, SoapUI
† Pré-requis
† Ingénierie des données, Schema XML, WSDL
† Remerciements
† TODO (peut être vous => @mickaelbaron)
Ceci est une alerte
Ceci est une astuce
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
6
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
† www.w3schools.com/soap
† apiacoa.org/publications/teaching/webservices/SOAP.pdf
† www.javapassion.com/webservices/SOAPBasics.pdf
† mickael-baron.fr/divers/schemaxml
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
7
Ressources : bibliothèque
† Programming Web Services with SOAP
† Auteur : James Snell, Doug Tidwell, Pavel Kulchenko
† Éditeur : O’Reilly
† Edition : Déc. 2001 - 264 pages - ISBN : 0596000952
† Java and SOAP
† Auteur : Robert Englander
† Éditeur : O’Reilly
† Edition : Mai 2002 - 288 pages - ISBN : 0596001754
† Understanding Web Services : WSDL, SOAP…
† Auteur : Eric Newcomer
† Éditeur : Addison-Wesley
† Edition : Mai 2002 - 368 pages - ISBN : 0201750813
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
8
Généralités SOAP
† SOAP est un protocole de communication entre application
basé sur le langage XML
† Initialement SOAP désignait l’acronyme de Simple Object
Access Protocol
† Qui est derrière SOAP (Microsoft et IBM)
† Objectifs visés
† Assurer la communication entre applications d’une même entreprise
(intranet)
† Assurer les échanges interentreprises entre applications et services
web
† Spécification du W3C
† SOAP 1.1 : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/
† SOAP 1.2 : http://www.w3.org/TR/soap12/
† Pour comparaison, SOAP est similaire aux protocoles « RPC »
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
9
Comparaison …
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
10
Où est utilisé SOAP ?
Entreprise B
Fournisseur de
services web
Entreprise A
Consommatrice de
services web
Annuaire UDDI
2
Entreprise A interroge
l’annuaire UDDI pour
obtenir une liste de
services web répondant à
ces exigences
3
Entreprise A télécharge
les documents qui
décrivent les services
web (WSDL)
1
Entreprise B publie ses
services web qu’elle
implémente dans un
annuaire UDDI (transmet
les WSDLs)
4
Entreprise A envoie des
messages SOAP conformes
aux WSDL pour invoquer les
services web de B
5
Entreprise B répond en
retournant des messages
SOAP conformes aux WSDL
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
11
Do you speak SOAP ?
† Pour lire et écrire du SOAP, les prérequis sont
† XML
† XML Schema
† Le pour
† Utile pour débugger une application
† Utile pour réaliser des tests via SoapUI
† Intercepter les messages bas niveau SOAP (via les handlers)
† Le contre
† Les APIs fournissent une abstraction des messages SOAP
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
12
Concepts d’un message SOAP
† Les messages SOAP sont utilisés pour envoyer (requête) et
recevoir (réponse) des informations d’un récepteur
† Un message SOAP peut être transmis à plusieurs récepteurs
intermédiaires avant d’être reçu par le récepteur final
(~ chaîne de responsabilité)
† Le format SOAP peut contenir des messages spécifiques
correspondant à des erreurs identifiées par le récepteur
† Un message SOAP est véhiculé vers le récepteur en utilisant
un protocole de transport (HTTP, SMTP…)
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
13
SOAP par l’exemple : requête vers le service HelloWorld
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:hel="http://helloworldwebservice.mickaelbaron.fr/">
<soapenv:Header/>
<soapenv:Body>
<hel:makeHelloWorld>
<value>Mickael BARON</value>
</hel:makeHelloWorld>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:hel="http://helloworldwebservice.mickaelbaron.fr/">
<soapenv:Header/>
<soapenv:Body>
<hel:simpleHelloWorld/>
</soapenv:Body>
</soapenv:Envelope>
† Exemple : appeler les opérations du service HelloWorld
Message SOAP pour
appeler l’opération
makeHelloWorld contenant
un paramètre value
Message SOAP pour
appeler l’opération
simpleHelloWorld ne
contenant pas de
paramètre
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
14
SOAP par l’exemple : réponse du service HelloWorld
† Exemple (suite) : message retour de l’appel des opérations
du service HelloWorld
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:makeHelloWorldResponse xmlns:ns2="http://helloworldwebservice.mickaelbaron.fr/">
<helloWorldResult>Hello World to Mickael BARON</helloWorldResult>
</ns2:makeHelloWorldResponse>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:simpleHelloWorldResponse xmlns:ns2="http://helloworldwebservice.mickaelbaron.fr/">
<helloWorldResult>Hello World to everybody</helloWorldResult>
</ns2:simpleHelloWorldResponse>
</soapenv:Body>
</soapenv:Envelope>
Les réponses sont
sensiblement identiques
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
15
Structure d’un message SOAP
† Un message SOAP est un document XML constitué d’une
enveloppe composée de deux parties
† Un en-tête (header) qui peut être facultatif
† Un corps (body)
Enveloppe SOAP
En-tête SOAP
(header facultatif)
Corps du message SOAP
(body)
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
16
L’enveloppe SOAP
† L’enveloppe est la racine d’un message SOAP identifiée par
la balise <soapenv:Enveloppe>
† La spécification impose que la balise et les sous balises
soient explicitement associées à un namespace
† La spécification SOAP définit deux namespaces
† SOAP-ENV ou soapenv : http://schemas.xmlsoap.org/soap/envelope/
† SOAP-ENC : http://schemas.xmlsoap.org/soap/encoding/
† La requête et la réponse ont la même structure
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope">
<SOAP-ENV:Body>
<!-- Contenu de la Requête -->
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope">
<SOAP-ENV:Body>
<!-- Contenu de la Réponse -->
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Message SOAP d’une
requête
Message SOAP d’une
réponse
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
17
En-tête SOAP
† L’en-tête d’un message SOAP est utilisé pour transmettre
des informations supplémentaires sur ce même message
† L’en-tête est défini par la balise <SOAP-ENV:Header>
† L’élément peut être facultatif
† Doit être placé avant le corps
† Différents usages de l’en-tête ?
† Informations authentifiant l’émetteur
† Contexte d’une transaction
† Pour certains protocoles de transport (FTP par exemple), l’en-tête
peut être utilisé pour identifier l’émetteur du message
† Un message SOAP peut transiter par plusieurs intermédiaires
avant le traitement par le récepteur final
† Pattern « Chaîne de responsabilité »
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
18
En-tête SOAP
† En-tête dans une série de transferts successifs de message
SOAP
Emetteur du
message
SOAP
Récepteur final
du message
SOAP
3
<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>
Récepteur
intermédiaire
n°1
1
<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>
Valeurs conventionnelles pour
la transmission par chaîne
Récepteur
intermédiaire
n°2
2
<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>
Le contenu de cet élément sera
traité par le récepteur intermédiaire
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
19
Corps SOAP
† Le corps d’un message SOAP est constitué par un élément
<SOAP-ENV:Body>
† L’élément <SOAP-ENV:Body> peut contenir soit
† Une erreur en réponse à une requête (élément <SOAP-ENV:Fault>)
† Des informations adressées au destinataire du message SOAP
respectant un encodage déterminé
† L’encodage des informations est précisé par les bindings du
document WSDL
† Attribut style (Document et RPC)
† Attribut use (encoded et litteral)
† Pour faire simple nous utiliserons les services web dans le
cadre de l’appel à une procédure distante
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
20
Corps SOAP
† L’objectif visé par SOAP a été de fournir un mécanisme
standardisé pour l’appel de procédures distant (RPC)
† De ce fait les informations adressées au destinataire de
messages SOAP doivent respecter un certain nombre de
convention
† Appel d’une opération représentée par une struct
† Le nom de la structure est celui de l’opération à appeler
† Chaque paramètre de l’opération est défini comme un sous élément
de la structure
† Si un paramètre est un type complexe (Person par exemple) une
nouvelle structure est définie contenant à son tour des sous
éléments …
† Le résultat est également représenté par une struct
† Le nom de la structure est celui de l’opération suivi de Response
† Les paramètres sont également structurés
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
21
Corps SOAP
† Exemple : corps de messages SOAP pour appeler des
opérations du service web Notebook
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:not="http://notebookwebservice.mickaelbaron.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.mickaelbaron.fr/">
<soapenv:Header/>
<soapenv:Body>
<not:addPersonWithSimpleType>
<name>BARON Mickael</name>
<address>Poitiers</address>
<birthyear>17081976</birthyear>
</not:addPersonWithSimpleType>
</soapenv:Body>
</soapenv:Envelope>
Message SOAP pour appeler
l’opération
addPersonWithComplexType
Paramètre de type complexe
défini dans une structure
(newPerson)
Message SOAP pour appeler
l’opération
addPersonWithSimpleType
Trois paramètres
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
22
Corps SOAP
† Exemple : corps de messages SOAP pour le résultat des
opérations du service web Notebook
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:addPersonWithComplexTypeResponse
xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/">
<addPersonWithComplexTypeResult>true</addPersonWithComplexTypeResult>
</ns2:addPersonWithComplexTypeResponse>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:addPersonWithSimpleTypeResponse
xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/">
<addPersonWithSimpleTypeResult>true</addPersonWithSimpleTypeResult>
</ns2:addPersonWithSimpleTypeResponse>
</soapenv:Body>
</soapenv:Envelope>
Messages SOAP pour la réponse
puisque les noms des opérations
sont suivis de Response
Les paramètres de sortie suivent la
même convention que les
paramètres d’entrée
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
23
SOAP transporté par HTTP
† SOAP utilise un protocole de transport pour véhiculer les
messages SOAP de l’émetteur au récepteur
† HTTP, SMTP, FTP, POP3 et NNTP
† Le modèle requête/réponse de SOAP convient parfaitement
au modèle requête/réponse HTTP
Enveloppe SOAP
En-tête SOAP
(header facultatif)
Corps du message SOAP
(body)
Requête / Réponse HTTP
Corps HTTP
En-tête HTTP
Contenu étudié
précédemment
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
24
SOAP transporté par HTTP
† Requête SOAP HTTP
† Méthode de type POST
† Nécessite un attribut SOAPAction
† Réponse SOAP HTTP
† Exploite les codes retours HTTP
† Si code de type 2xx, message
SOAP reçu
† Si code 500, message en erreur,
le corps SOAP doit contenir fault
POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
Content-Length: 459
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:not="http://notebookwebservice.mickaelbaron.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>
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Sun, 13 Dec 2009 12:00:33 GMT
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:addPersonWithComplexTypeResponse
xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/">
<addPersonWithComplexTypeResult>
true
</addPersonWithComplexTypeResult>
</ns2:addPersonWithComplexTypeResponse>
</soapenv:Body>
</soapenv:Envelope>
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
25
Traitement des messages SOAP
POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
Content-Length: 459
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:not="http://notebookwebservice.mickaelbaron.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>
PHP
Java C++
.NET
Framework
service
web
Conteneur
Web
Couche de transport HTTP
API SOAP
1
Réception d’un
message SOAP via le
transport HTTP
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:not="http://notebookwebservice.mickaelbaron.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>
2 La partie HTTP
est nettoyée
3
Invocation de la
méthode en fonction de
l’opération SOAP
Couche d’accès aux
implémentations des services
web (différents langages)
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
26
SOAP UI : outil graphique de tests de service web
† SOAP UI est un outil pour tester des services web
† www.soapui.org
† Disponible en standalone ou intégré dans les environnements de
développement (Eclipse, Intellij, Netbeans, Maven…)
† Peut s’utiliser pour n’importe quelle plateforme de développement
† Fonctionnalités de SOAP UI
† Supporte les services web étendus (WSDL + SOAP + UDDI) ou REST
† Inspecter des services web
† Invoquer des services web
† Développer des services web
† Simuler des services web via des bouchons (mocks)
† Effectuer des tests de qualité (temps de réponse…)
SOAP - M. Baron - Page
mickael-baron.fr
@mickaelbaron
27
SOAP UI : outil graphique de tests de service web
Les logs de SoapUI
Les projets regroupant les
appels aux services web
Les messages SOAP (requête et réponse)

Contenu connexe

Similaire à 03_-_SOA_-_SOAP.pdf

2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_servicesCamus LANMADOUCELO
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbHINDGUENDOUZ
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec aspNovencia Groupe
 
WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs Jean Michel
 
Presentation
PresentationPresentation
Presentationbois
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfngombeemmanuel
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhindguendouz2000
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesCERTyou Formation
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSLhouceine OUHAMZA
 

Similaire à 03_-_SOA_-_SOAP.pdf (20)

Soap
SoapSoap
Soap
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec asp
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
Chapitre 1.pdf
Chapitre 1.pdfChapitre 1.pdf
Chapitre 1.pdf
 
Presentation SOAP
 Presentation SOAP Presentation SOAP
Presentation SOAP
 
WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs WebApp #4 : Consuming REST APIs
WebApp #4 : Consuming REST APIs
 
Presentation SOAP
Presentation SOAPPresentation SOAP
Presentation SOAP
 
Presentation
PresentationPresentation
Presentation
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdf
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservices
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWS
 

Dernier

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 

Dernier (15)

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 

03_-_SOA_-_SOAP.pdf

  • 1. SOA – Services web étendus Mickaël BARON – 2010 (Rev. Août 2020) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr @mickaelbaron mickael-baron.fr SOAP : Communiquer
  • 2. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 2 Creative Commons Contrat Paternité Partage des Conditions Initiales à l'Identique 2.0 France creativecommons.org/licenses/by-sa/2.0/fr Licence
  • 3. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 3 À propos de l’auteur … † Mickaël BARON † Ingénieur de Recherche au LIAS † https://www.lias-lab.fr † Equipe : Ingénierie des Données et des Modèles † Responsable des plateformes logicielles, « coach » technique † Ancien responsable Java de Developpez.com (2011-2021) † Communauté Francophone dédiée au développement informatique † https://java.developpez.com † 4 millions de visiteurs uniques et 12 millions de pages vues par mois † 750 00 membres, 2 000 forums et jusqu'à 5 000 messages par jour @mickaelbaron mickael-baron.fr
  • 4. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 4 Plan du cours † Généralités SOAP † SOAP par l’exemple : HelloWorld service † Structure d’un message SOAP † En tête d’un message SOAP (header) † Corps d’un message SOAP (body) † SOAP et le transport HTTP † Outil SoapUI
  • 5. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 5 Déroulement du cours † Pédagogie du cours † Des bulles d’aide tout au long du cours † Survol des principaux concepts en évitant une présentation exhaustive † Logiciels utilisés † Navigateur web, SoapUI † Pré-requis † Ingénierie des données, Schema XML, WSDL † Remerciements † TODO (peut être vous => @mickaelbaron) Ceci est une alerte Ceci est une astuce
  • 6. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 6 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 † www.w3schools.com/soap † apiacoa.org/publications/teaching/webservices/SOAP.pdf † www.javapassion.com/webservices/SOAPBasics.pdf † mickael-baron.fr/divers/schemaxml
  • 7. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 7 Ressources : bibliothèque † Programming Web Services with SOAP † Auteur : James Snell, Doug Tidwell, Pavel Kulchenko † Éditeur : O’Reilly † Edition : Déc. 2001 - 264 pages - ISBN : 0596000952 † Java and SOAP † Auteur : Robert Englander † Éditeur : O’Reilly † Edition : Mai 2002 - 288 pages - ISBN : 0596001754 † Understanding Web Services : WSDL, SOAP… † Auteur : Eric Newcomer † Éditeur : Addison-Wesley † Edition : Mai 2002 - 368 pages - ISBN : 0201750813
  • 8. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 8 Généralités SOAP † SOAP est un protocole de communication entre application basé sur le langage XML † Initialement SOAP désignait l’acronyme de Simple Object Access Protocol † Qui est derrière SOAP (Microsoft et IBM) † Objectifs visés † Assurer la communication entre applications d’une même entreprise (intranet) † Assurer les échanges interentreprises entre applications et services web † Spécification du W3C † SOAP 1.1 : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ † SOAP 1.2 : http://www.w3.org/TR/soap12/ † Pour comparaison, SOAP est similaire aux protocoles « RPC »
  • 9. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 9 Comparaison …
  • 10. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 10 Où est utilisé SOAP ? Entreprise B Fournisseur de services web Entreprise A Consommatrice de services web Annuaire UDDI 2 Entreprise A interroge l’annuaire UDDI pour obtenir une liste de services web répondant à ces exigences 3 Entreprise A télécharge les documents qui décrivent les services web (WSDL) 1 Entreprise B publie ses services web qu’elle implémente dans un annuaire UDDI (transmet les WSDLs) 4 Entreprise A envoie des messages SOAP conformes aux WSDL pour invoquer les services web de B 5 Entreprise B répond en retournant des messages SOAP conformes aux WSDL
  • 11. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 11 Do you speak SOAP ? † Pour lire et écrire du SOAP, les prérequis sont † XML † XML Schema † Le pour † Utile pour débugger une application † Utile pour réaliser des tests via SoapUI † Intercepter les messages bas niveau SOAP (via les handlers) † Le contre † Les APIs fournissent une abstraction des messages SOAP
  • 12. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 12 Concepts d’un message SOAP † Les messages SOAP sont utilisés pour envoyer (requête) et recevoir (réponse) des informations d’un récepteur † Un message SOAP peut être transmis à plusieurs récepteurs intermédiaires avant d’être reçu par le récepteur final (~ chaîne de responsabilité) † Le format SOAP peut contenir des messages spécifiques correspondant à des erreurs identifiées par le récepteur † Un message SOAP est véhiculé vers le récepteur en utilisant un protocole de transport (HTTP, SMTP…)
  • 13. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 13 SOAP par l’exemple : requête vers le service HelloWorld <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.mickaelbaron.fr/"> <soapenv:Header/> <soapenv:Body> <hel:makeHelloWorld> <value>Mickael BARON</value> </hel:makeHelloWorld> </soapenv:Body> </soapenv:Envelope> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.mickaelbaron.fr/"> <soapenv:Header/> <soapenv:Body> <hel:simpleHelloWorld/> </soapenv:Body> </soapenv:Envelope> † Exemple : appeler les opérations du service HelloWorld Message SOAP pour appeler l’opération makeHelloWorld contenant un paramètre value Message SOAP pour appeler l’opération simpleHelloWorld ne contenant pas de paramètre
  • 14. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 14 SOAP par l’exemple : réponse du service HelloWorld † Exemple (suite) : message retour de l’appel des opérations du service HelloWorld <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:makeHelloWorldResponse xmlns:ns2="http://helloworldwebservice.mickaelbaron.fr/"> <helloWorldResult>Hello World to Mickael BARON</helloWorldResult> </ns2:makeHelloWorldResponse> </soapenv:Body> </soapenv:Envelope> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:simpleHelloWorldResponse xmlns:ns2="http://helloworldwebservice.mickaelbaron.fr/"> <helloWorldResult>Hello World to everybody</helloWorldResult> </ns2:simpleHelloWorldResponse> </soapenv:Body> </soapenv:Envelope> Les réponses sont sensiblement identiques
  • 15. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 15 Structure d’un message SOAP † Un message SOAP est un document XML constitué d’une enveloppe composée de deux parties † Un en-tête (header) qui peut être facultatif † Un corps (body) Enveloppe SOAP En-tête SOAP (header facultatif) Corps du message SOAP (body)
  • 16. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 16 L’enveloppe SOAP † L’enveloppe est la racine d’un message SOAP identifiée par la balise <soapenv:Enveloppe> † La spécification impose que la balise et les sous balises soient explicitement associées à un namespace † La spécification SOAP définit deux namespaces † SOAP-ENV ou soapenv : http://schemas.xmlsoap.org/soap/envelope/ † SOAP-ENC : http://schemas.xmlsoap.org/soap/encoding/ † La requête et la réponse ont la même structure <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> <SOAP-ENV:Body> <!-- Contenu de la Requête --> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> <SOAP-ENV:Body> <!-- Contenu de la Réponse --> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Message SOAP d’une requête Message SOAP d’une réponse
  • 17. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 17 En-tête SOAP † L’en-tête d’un message SOAP est utilisé pour transmettre des informations supplémentaires sur ce même message † L’en-tête est défini par la balise <SOAP-ENV:Header> † L’élément peut être facultatif † Doit être placé avant le corps † Différents usages de l’en-tête ? † Informations authentifiant l’émetteur † Contexte d’une transaction † Pour certains protocoles de transport (FTP par exemple), l’en-tête peut être utilisé pour identifier l’émetteur du message † Un message SOAP peut transiter par plusieurs intermédiaires avant le traitement par le récepteur final † Pattern « Chaîne de responsabilité »
  • 18. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 18 En-tête SOAP † En-tête dans une série de transferts successifs de message SOAP Emetteur du message SOAP Récepteur final du message SOAP 3 <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> Récepteur intermédiaire n°1 1 <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> Valeurs conventionnelles pour la transmission par chaîne Récepteur intermédiaire n°2 2 <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> Le contenu de cet élément sera traité par le récepteur intermédiaire
  • 19. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 19 Corps SOAP † Le corps d’un message SOAP est constitué par un élément <SOAP-ENV:Body> † L’élément <SOAP-ENV:Body> peut contenir soit † Une erreur en réponse à une requête (élément <SOAP-ENV:Fault>) † Des informations adressées au destinataire du message SOAP respectant un encodage déterminé † L’encodage des informations est précisé par les bindings du document WSDL † Attribut style (Document et RPC) † Attribut use (encoded et litteral) † Pour faire simple nous utiliserons les services web dans le cadre de l’appel à une procédure distante
  • 20. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 20 Corps SOAP † L’objectif visé par SOAP a été de fournir un mécanisme standardisé pour l’appel de procédures distant (RPC) † De ce fait les informations adressées au destinataire de messages SOAP doivent respecter un certain nombre de convention † Appel d’une opération représentée par une struct † Le nom de la structure est celui de l’opération à appeler † Chaque paramètre de l’opération est défini comme un sous élément de la structure † Si un paramètre est un type complexe (Person par exemple) une nouvelle structure est définie contenant à son tour des sous éléments … † Le résultat est également représenté par une struct † Le nom de la structure est celui de l’opération suivi de Response † Les paramètres sont également structurés
  • 21. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 21 Corps SOAP † Exemple : corps de messages SOAP pour appeler des opérations du service web Notebook <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.mickaelbaron.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.mickaelbaron.fr/"> <soapenv:Header/> <soapenv:Body> <not:addPersonWithSimpleType> <name>BARON Mickael</name> <address>Poitiers</address> <birthyear>17081976</birthyear> </not:addPersonWithSimpleType> </soapenv:Body> </soapenv:Envelope> Message SOAP pour appeler l’opération addPersonWithComplexType Paramètre de type complexe défini dans une structure (newPerson) Message SOAP pour appeler l’opération addPersonWithSimpleType Trois paramètres
  • 22. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 22 Corps SOAP † Exemple : corps de messages SOAP pour le résultat des opérations du service web Notebook <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/"> <addPersonWithComplexTypeResult>true</addPersonWithComplexTypeResult> </ns2:addPersonWithComplexTypeResponse> </soapenv:Body> </soapenv:Envelope> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithSimpleTypeResponse xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/"> <addPersonWithSimpleTypeResult>true</addPersonWithSimpleTypeResult> </ns2:addPersonWithSimpleTypeResponse> </soapenv:Body> </soapenv:Envelope> Messages SOAP pour la réponse puisque les noms des opérations sont suivis de Response Les paramètres de sortie suivent la même convention que les paramètres d’entrée
  • 23. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 23 SOAP transporté par HTTP † SOAP utilise un protocole de transport pour véhiculer les messages SOAP de l’émetteur au récepteur † HTTP, SMTP, FTP, POP3 et NNTP † Le modèle requête/réponse de SOAP convient parfaitement au modèle requête/réponse HTTP Enveloppe SOAP En-tête SOAP (header facultatif) Corps du message SOAP (body) Requête / Réponse HTTP Corps HTTP En-tête HTTP Contenu étudié précédemment
  • 24. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 24 SOAP transporté par HTTP † Requête SOAP HTTP † Méthode de type POST † Nécessite un attribut SOAPAction † Réponse SOAP HTTP † Exploite les codes retours HTTP † Si code de type 2xx, message SOAP reçu † Si code 500, message en erreur, le corps SOAP doit contenir fault POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.mickaelbaron.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> HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Sun, 13 Dec 2009 12:00:33 GMT <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.mickaelbaron.fr/"> <addPersonWithComplexTypeResult> true </addPersonWithComplexTypeResult> </ns2:addPersonWithComplexTypeResponse> </soapenv:Body> </soapenv:Envelope>
  • 25. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 25 Traitement des messages SOAP POST http://localhost:8080/NotebookWebService/notebook HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.mickaelbaron.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> PHP Java C++ .NET Framework service web Conteneur Web Couche de transport HTTP API SOAP 1 Réception d’un message SOAP via le transport HTTP <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.mickaelbaron.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> 2 La partie HTTP est nettoyée 3 Invocation de la méthode en fonction de l’opération SOAP Couche d’accès aux implémentations des services web (différents langages)
  • 26. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 26 SOAP UI : outil graphique de tests de service web † SOAP UI est un outil pour tester des services web † www.soapui.org † Disponible en standalone ou intégré dans les environnements de développement (Eclipse, Intellij, Netbeans, Maven…) † Peut s’utiliser pour n’importe quelle plateforme de développement † Fonctionnalités de SOAP UI † Supporte les services web étendus (WSDL + SOAP + UDDI) ou REST † Inspecter des services web † Invoquer des services web † Développer des services web † Simuler des services web via des bouchons (mocks) † Effectuer des tests de qualité (temps de réponse…)
  • 27. SOAP - M. Baron - Page mickael-baron.fr @mickaelbaron 27 SOAP UI : outil graphique de tests de service web Les logs de SoapUI Les projets regroupant les appels aux services web Les messages SOAP (requête et réponse)