|
|
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. |
|
|