Message SOAP

Un message SOAP est un fichier texte au format XML accessible donc à toute application construite pour l'accepter. Ainsi le service web est une 'application' ouverte à toutes les personnes qui peuvent/arrivent à y accéder (cf. partie sécurité).

Un service web basé sur SOAP nécessite donc l'envoi d'un fichier XML du genre:

<?xml version='1.0' ?>
<SOAPenv:Envelope 
       xmlns:SOAPenv="http://schemas.xmlSOAP.org/SOAP/envelope/" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <SOAPenv:Body>
  <req:getNumberOfArticles xmlns:req="http://daily-moon.com/CMS/">
   <req:category>classifieds</req:category>
  </req:getNumberOfArticles>
 </SOAPenv:Body>
</SOAPenv:Envelope>

Ce message est envoyé d'un système à l'autre via HTTP. Le système recevant interprète le message, fait ce qu'il a à faire et renvoye la réponse dans un autre message SOAP.

Il existe d'autre forme de service web plus simple que l'envoi par message SOAP: REST (Representational State Transfer) et XML-RPC qui n'intègre pas des notions de sécurité, interoperabilité, …SOAP reste donc un meilleur choix pour des applications entreprise.

<env:Envelope xmlns:env="http://www.w3.org/2003/05/SOAP-envelope"> 
 <env:Header>
 </env:Header>
 <env:Body>
  <cms:getNumberOfArticles xmlns:cms="http://www.daily-moon.com/cms">
    <cms:category>classifieds</cms:category>
    <cms:subcategory>forsale</cms:subcategory>
  </cms:getNumberOfArticles>
 </env:Body>
</env:Envelope>

A noter qu'il y a deux préfixes différents qui correspondent à deux espaces de noms (namespace) différents (env et cms). Ils permettent de différencier l'enveloppe SOAP du contenu. L'enveloppe SOAP contient un en-tête (<env:Header>) et un corps (<env:Body).