TUTORIEL XML 
Expliquez-moi... La structure d'un message SOAP
Le Simple Object Access Protocol est un protocole destiné à transporter des informations échangées par deux applications. Décomposition d'un message-type, pour mieux comprendre. (07/07/2005)
SOAP (pour Simple Object Access Protocol) est un protocole souple mais complexe, servant à transporter les informations échangées entre deux applications (généralement des services Web). Le principal avantage de SOAP face à l'utilisation d'un document purement XML est la possibilité offerte aux développeurs d'adjoindre leurs propres détails aux messages.

Un message SOAP n'est en effet pas qu'un fichier XML classique, avec seulement un espace de nom prenant en charge les diverses extensions. Le document décrivant un message de ce type est en réalité une déclaration très structurée, appelée "enveloppe", et contenant le nécessaire à l'exécution de l'opération qu'elle contient.

Principalement, une enveloppe SOAP peut être décomposée en deux composants : l'entête (header) et le corps (body) du message. Il peut y avoir plusieurs entêtes, ou un entête vide. Le squelette complet prend la forme suivante :

<?xml version="1.0" ?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/evelope/">
  <env:Header />
  <env:Body ... >
    ...
  </env:Body>
</env:Envelope>

Par ailleurs, les messages SOAP reposent fortement sur l'usage des espaces de nom : cela permet au message de transporter tout type de contenu XML, et d'éviter les conflits de noms d'éléments.

L'enveloppe
C'est l'élément supérieur du document : il englobe entête et corps. Il est obligatoire - sans enveloppe, le message ne peut pas être transporté - , et doit répondre qualifié, c'est-à-dire répondre à l'espace de nom définissant SOAP, comme présenté dans l'exemple ci-dessus.

L'entête
Placé au sein de l'enveloppe avant même le corps, l'entête peut-être utilisé pour compléter les informations nécessaires à une requête. Le plus souvent, y sont précisés des extensions SOAP (prédéfinies ou propre à l'application), des identifiants de cibles SOAP intermédiaires, ou plus généralement des métadonnées relatives au message.

Les informations de l'entête peuvent être traitées, modifiées ou effacées par les applications intermédiaires, afin que le destinataire final puisse au mieux analyser son contenu. Par ailleurs, pour assurer le bon traitement de ces informations, tous les éléments de Header doivent être qualifiés par un espace de nom.

L'entête reconnaît plusieurs attributs spécifiques :
- actor, qui indique le destinataire de l'information indiqué par l'entête. Cela permet de viser une application intermédiaire spécifique, via une URL.
- mustUnderstand, qui prend une valeur booléenne et indique si le traitement de l'élément est obligatoire ou non.
- encodingStyle, qui spécifie les règles d'encodage s'appliquant à l'élément.

Le corps
Cette section contient les données transportées par le message SOAP (le payload) qui, comme pour les éléments précédents, doit voir tous ces sous-éléments correctement qualifiés par des espaces de nom.

  Forum

Réagissez dans les forums de JDN Développeurs

Il doit contenir, en envoi, le nom de la méthode appelée, ainsi que les paramètres appliqués à cette méthode. En réponse, il contiendra soit un appel méthode, soit une réponse à sens unique, ou finalement un message d'erreur détaillée.

Ce dernier message utilise le sous-élément Fault, qui lui-même dispose de quatre sous-éléments possibles :
- faultcode, identifiant l'erreur par un code.
- faultstring, une explication lisible de l'erreur.
- faultactor, désigne l'origine de l'erreur.
- detail, donne des détails spécifiques.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages