Vous êtes sur la page 1sur 43

Les architectures orientées services

Chapitre 4 :
Les Services Web SOAP

hamdi.aloulou@isima.u-monastir.tn
Introduction
› Il existe deux types de Services Web les plus connus :

– Les Services Web REST (aussi appelés Web API)

– Les Services Web SOAP (aussi appelés Big Web


Services)

› Les services web se basent principalement sur le


protocole HTTP et les langages XML et JSON
2
Le protocole HTTP

8
Le Protocole HTTP
› HTTP : HyperText Transfer Protocol
– Protocole de communication développer pour le web
(Requête/Réponse)

– Protocole qui permet au client de récupérer des documents du


serveur
– Ces documents peuvent être statiques (contenu qui ne change pas
: HTML, PDF, Image, etc..) ou dynamiques ( Contenu généré
dynamiquement au moment de la requête : PHP, JSP, ASP…)
– Ce protocole permet également de soumettre des formulaires
9
Le Protocole HTTP
› Fonctionnement (très simple; Protocole sans état)
– Le client se connecte au serveur (Créer une socket)

– Le client demande au serveur un document : Requête HTTP

– Le serveur renvoi au client le document (status=200) ou une


erreur (status=404 quand le document n’existe pas)

– Déconnexion

10
Le Protocole HTTP : Fonctionnement

Client HTTP Serveur Web

Connexion
:Socket :ServerSocket
GET /doc.html Port = 80
IPS = … POST /script.php
Port = 80 Accept()
Réponse HTTP
Status = 200

Déconnexion :Socket
Doc.htm IPC = … Doc.htm
Port = …
11
Les méthodes du protocole HTTP
› Une requête HTTP peut être envoyée en utilisant les méthodes
suivantes :
– GET : Pour récupérer le contenu d’un document

– POST : Pour soumissionner des formulaires (Envoyer, dans la requête,


des données saisies par l’utilisateur )

– PUT : Pour envoyer un fichier du client vers le serveur

– DELETE : Pour demander au serveur de supprimer un document.

– HEAD : Pour récupérer les informations sur un document (Type, Capacité,


Date de dernière modification, etc…) 12
Le Protocole HTTP : La requête
(Méthode GET) Entête de la requête

Méthode + uri d’appel+ données GET /doc.html HTTP/1.0


utilisateur
Format de la réponse attendu Accect :text/html
Code de la langue utilisée par le nav Accept-Language : fr
Type du navigateur User-Agent : Mozilla/4.0

***saut de ligne ***

Corps de la requête
(vide) 13
Le Protocole HTTP : La réponse Entête de la réponse

Ligne du status HTTP/1.0 200 OK


Date du serveur Date : Wed, 05Feb18 16:42:30 GMT
Type du serveur Server : Apache/1.3.24
Date de dernière modification Last-Modified : Wed 02Oct17 23:50:01 GMT
Type de contenu de retour Content-Type : Text/html
Taille du contenu Content-length : 4205

***saut de ligne ***

<HTML>
Le fichier que le client va <HEAD> … </HEAD>
afficher <BODY>…</BODY>
</HTML>

Corps de la réponse
14
Le Protocole HTTP : Les codes de réponse
› Les codes de réponse se divisent en 5 classes :
– 1XX : Informationnel
› Indique une réponse provisionnel
› Exemples : 100 : Continue
– 2XX : Succès
› Indique que la requête a été reçu, compris, accepté et traité avec succès
› Exemples : 200 : OK, 201 : Created.
– 3XX : Redirection
› Indique que d’autres mesures doivent être prise pour répondre à la requête.
› Exemple : 301 : Moved Permanently
– 4XX : Erreur Client
› Utiliser dans les cas où le client a fait une erreur
› Exemples : 403 : Forbidden, 404 : Not found, 405 : Method Not Alloweds
– 5XX : Erreur Serveur
› Indique que le serveur est conscient qu'il a rencontré une erreur ou est
incapable d'effectuer la demande.
› Exemples : 500 : internal Server Error, 501 : Not Implemented
15
Le principe des services
web SOAP

25
Les services web SOAP
Service Oriented Architecture Protocol
› Un message SOAP
– Permet la transmission d’un message au format XML

– Va d’un nœud émetteur vers un nœud receveur

› SOAP s’appuie sur :


– XML et XML Schema pour la représentation des messages

– Les protocoles internet classiques pour la transmission des


messages HTTP, SMTP, JMS, FTP…
26
L’Idée des Services Web SOAP
› Web service : Un objet créé avec un langage quelconque / Une
class avec des méthodes qui peuvent être invoqué à distance.

› Un client quelconque pour qu’il puisse invoqué les méthodes il


doit envoyer une requête SOAP.

› Une Requête SOAP c’est une requête HTTP mais avec le corps
de la requête contient un message XML avec une structure bien
défini.
27
L’Idée des Services Web SOAP
› Au niveau de serveur il y a des api qui sont capables de lire
ce message. (pour JAVA il y a par exemple JaxWS).

› La réponse est envoyé par une requête HTTP. Pareil dans la


requête de réponse j’envoie une message XML

› Donc SOAP c’est échanger des messages XML entre les


applications.

28
L’Idée des Services Web SOAP
(POST)

GET /doc.html HTTP/1.0


Accect :text/html
Accept-Language : fr
User-Agent : Mozilla/4.0
***saut de ligne ***

HTTP/1.0 200 OK
(POST)
Date : Wed, 05Feb18 16:42:30 GMT
Server : Apache/1.3.24
Last-Modified : Wed 02Oct17 23:50:01 GMT
Content-Type : Text/html
Content-length : 4205
***saut de ligne ***
<HTML>
<HEAD> … </HEAD>
<BODY>…</BODY> 29
</HTML>
La méthode HTTP pour les Web Service SOAP
› SOAP:
– POST : La méthode utilisé pour envoyer la requête SOAP et
recevoir la réponse SOAP.

30
Web Service : Requête SOAP avec POST
POST /Nom_Script HTTP/1.0
Accect :text/html
Entête de la requête
Accept-Language : fr
User-Agent : Mozilla/4.0

***saut de ligne ***

<SOAP-ENV:Envelope xmlns SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”>


<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<conversion xmlns=“http://bk/test”>
<montant xmlns=“”>12</montant>
</conversion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
31
Corps de la requête
Web Service : Réponse SOAP avec POST
HTTP/1.0 200 OK
Date : Wed, 05Feb18 16:42:30 GMT
Server : Apache/1.3.24 Entête de la réponse
Last-Modified : Wed 02Oct17 23:50:01 GMT
Content-Type : Text/html
Content-length : 4205
***saut de ligne ***
</xml version=“1.0” ?>
<SOAP-ENV:Envelope xmlns SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”
xmlns xsd=“http://www.w3.org/2001/XMLSchema” xmlns ns1=“http://bk/test”>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:conversionResponse>
<return>132.0</return>
</ns1:conversionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
32
Corps de la réponse
Concepts des Services Web SOAP

› Le concept des Web Services s’articule actuellement

autour des trois concepts suivants :

– SOAP (Simple Object Access Protocol)

– WSDL (Web Services Description Language)

– UDDI (Universal Description, Discovery and Integration)

34
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
› protocole d'échange inter-applications
› indépendant de toute plate-forme,
› basé sur le langage XML.
› Un appel SOAP est transporté dans le protocole HTTP.
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)

35
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
› Description au format XML des Web Services
› Pour qu’un client puisse faire appel à un WS, il a besoin de
savoir son nom, le nom des méthodes et les paramètres d’entré
et de sortie de chaque méthode. C’est la raison pour laquelle
dans les web services il y a ce qu’on appelle les WSDLs.
› Précise les méthodes pouvant être invoquées, leurs signatures
et le point d’accès (URL, port, etc..).
– UDDI (Universal Description, Discovery and Integration) 36
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)
› Annuaire de Web Services, permettant à la fois la publication et
la recherche des Web Services.
› UDDI se comporte lui-même comme un Web Service dont les
méthodes sont appelées via le protocole SOAP.
› On utilise l’annuaire dans le cas où on ne connait pas encore
où se trouve le WS. Si on a besoin d’un WS, et qu’on ne connait
pas où on va le trouver, on peut utiliser un annuaire pour
récupérer l’adresse des WS.
37
L’Idée des Services Web SOAP
2: J’ai trouvé! Voici le serveur
hébergeant ce service web Contrat
UDDI
SOAP

3: Quel est le format d’appel du


service que tu propose
un service web
1: Je cherche

XML 4: Voici mon contrat (WSDL)

Client Serveur
XML

5: J’ai compris comment invoquer ton


service. Je t’envoie un document XML
représentant ma requête SOAP WS

6: J’ai exécuté ta requête et je te retourne le résultat 38


(réponse SOAP)
Le protocole SOAP

39
Structure d’un message SOAP
Structure d’un message SOAP

PROTOCOLE HEADER Protocole de transport ex:


HTTP
PROTOCOLE BODY
SOAP Envelope Définit le document XML
comme un message SOAP
SOAP Header
Optionnelle: Stockage des
informations spécifiques à la
SOAP Body
PROTOCOLE BODY transaction

Contenant des données à


transporter
SOAP Fault
Gestion d’erreurs

40
Structure d’un document SOAP
› Dans SOAP, les messages sont vus comme des enveloppes où
l’application renferme les données à envoyer
› Soap:envelope (Fr. enveloppe) (obligatoire)
– Est l'élément racine d’un message SOAP.
› Soap:header (Fr. entête) (Optionnel)
– est une partie facultative qui peut contenir des informations comme des
identifiants.
› Soap:body (Fr. corps) (Obligatoire)
– est un container qui contient les méthodes et les paramètres qui seront
exécutés par le destinataire final / La réponse de la méthode invoquée
› Soap:fault (Fr. erreur) (Optionnel)
– est un élément facultatif défini dans le corps SOAP et qui est utilisé pour
reporter les erreurs. 41
Entête SOAP (Header)
› Paramètres annexes : Propriétés du message
– Informations d’authentification

– Informations liées aux transactions


<soap:Envelope xmlns:soap="...">
<soap:Header>
<UsernameToken xmlns="http://abc.com/webservices">
user
</UsernameToken>
<PasswordText xmlns="http://abc.com/webservices">
hello123
</PasswordText>
</soap:Header>
<soap:Body><!-- data goes here --></soap:Body>
</soap:Envelope>
42
Corps SOAP (Body)
› Endroit où les données spécifiques à l’application, et qui
doivent être échangées, sont placées
› L’élément Body est obligatoire, mais peut être vide.
› Il peut contenir plusieurs fils (appelés des entrées), qui
peuvent être:
– Données spécifiques à l’application: information échangée dans le
WS. Représentée par une méthode et ses arguments (requête) ou
une ou plusieurs valeurs (réponses)
– Message de faute : utilisé en cas d’erreur.
› Un message SOAP contient des données ou un message
de faute, mais pas les deux à la fois.
43
Exemple de Message SOAP (Request)
<?xml version=‘1.0’ ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<Commande xmlns="http://www.glaces.com">
<parfum>Fraise</parfum>
<quantite>16</quantite>
<livraison>
<adresse>8 bvd N.Bohr Villeurbanne</adresse>
<destination>M2TI</destination>
</livraison>
</commande>
</env:Body>
</env:Envelope>
44
Exemple de Message SOAP (Response)

<?xml version=‘1.0’ ?>


<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<confirmation xmlns="http://www.glace.com">
<heure>10h</heure>
</confirmation>
</env:Body>
</env:Envelope>

45
Fautes SOAP
› Utilisé lorsqu’une erreur survient
– En général dans une réponse à un message reçu auparavant

› Se place dans la partie Body

› Le contenu est une explication de l’erreur:


– Une valeur
– Une explication textuelle
– Un morceau de document spécifique à l’application
– Le rôle du nœud à l’origine de l’erreur
› Utile en présence de nœuds intermédiaires
46
Exemple de Faute SOAP
<?xml version = '1.0' ?>
<env:Envelope
xmlns:env = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
<env:Body>
<env:Fault>
<faultcode xsi:type = "xsd:string">
env:Client
</faultcode>
<faultstring xsi:type = "xsd:string">
Failed to locate method (ValidateCreditCard) in class (examplesCreditCard)
</faultstring>
</env:Fault>
</env:Body>
47
</env:Envelope>
Le fichier de description
WSDL

48
WSDL
Web Services Description Language
› C’est un langage décrivant comment s’interfacer avec des
services web basés sur XML.

› Décrit comment accéder à un service Web et quelle sont les


opérations qu’on pourra effectuer.

› Se compose d'un ensemble d'éléments décrivant les types de


données utilisés par le service, les messages que le service
peut recevoir, ainsi que les liaisons SOAP associées à chaque
message. 49
WSDL
Structure d’un document WSDL
Definitions
Types Element

+ Message Part
Input

PortType + Operation Output

SOAPBinding SOAPOperation
Binding
Operation Input
Output
Documentation
Service

Port SOAPAddress

Structure d’un document WSDL 50


WSDL
Structure d’un document WSDL
<definitions>
<types>
définition des types........
</types>
<message>
définition d’un message....
</message>
<portType>
<operation>
définition d’une opération.......
</operation>
</portType>
<binding>
définition d’un binding....
</binding>
<service>
définition d’un service....
</service>
</definitions>
51
WSDL
Structure d’un document WSDL
› Un fichier WSDL contient donc les éléments.
– Definitions : C'est l'élément racine de tous les documents WSDL. Il
définit le nom du service Web, déclare plusieurs espaces de noms
utilisés dans le reste du document et contient tous les autres éléments.

– Service : indique les adresses de port de chaque liaison.

– Port : représente un point d'accès de services défini par une adresse


réseau et une liaison.

– Binding : spécifie une liaison entre un <portType> et un protocole


concret (SOAP, HTTP...).
52
WSDL
Structure d’un document WSDL
› Un fichier WSDL contient donc les éléments.
– PortType : décrit un ensemble d'opérations. Chaque opération a zéro ou
un message en entrée, zéro ou plusieurs messages de sortie ou
d'erreurs.
– Operation : c'est la description d'une action (méthode) exposée dans le
port.
– Message : représente une définition abstraire (noms et types) des
données en entrée et en sortie de la méthode.
– Type : fournit la définition de types de données utilisés pour décrire les
messages échangés. 53
Exemple

54
Exemple

55
Exemple

56
Le registre UDDI

57
UDDI
Universal Description, Discovery and Integration

› Spécification pour la description et découverte des web


services.

› L’UDDI a deux sections :


– Un registre de toutes les métadonnées des services Web, y
compris un pointeur vers la description WSDL des services.

– Un ensemble de définitions des PortType WSDL pour manipuler et


rechercher ce registre.

58

Vous aimerez peut-être aussi