SOAP (Simple Object Application Protocol) è il protocollo che descrive il modo in cui le applicazioni distribuite realizzate con la tecnologia XML Web Services si scambiano informazioni.
SOAP di solito usa HTTP per il trasporto dei dati; l’applicazione client effettua una richiesta HTTP al servizio Web (sempre con il metodo POST); il servizio Web manda una risposta HTTP.
Richiesta e risposta contengono come entità un documento XML; il documento XML inviato con la richiesta descrive la chiamata di un metodo del servizio Web; il documento XML inviato con la risposta descrive il risultato dell’elaborazione del servizio.
SOAP descrive il formato dei documenti XML inviati con la richiesta e la risposta HTTP.
Un messaggio SOAP è un documento XML formato da:
<Envelope> <Header> </Header> <Body> </Body> </Envelope>
L’header è opzionale; il body contiene il messaggio vero e proprio.
La chiamata di un metodo specifica il nome del metodo, l’URN dell’applicazione e i parametri da passare al metodo.
<Body> <m:metodo xmlns:m="host-com:applicazione"> <par1>...</par1> </m:metodo> </Body>
La risposta contiene un elemento metodoResponse (dove metodo è il nome del metodo) con il risultato della risposta:
<Body> <m:metodoResponse xmlns:m="host-com:applicazione"> <result>...</result> </m:metodoResponse> </Body>
In caso di errore la risposta contiene l’elemento Fault
composto da quattro parti:
-
faultcode
codice dell’errore; -
faultstring
descrizione dell’errore; -
runcode
indica se il messaggio di partenza è giunto al server; -
detail
ulteriori informazioni, per esempio una descrizione aggiuntiva.
Dato che il protocollo usato è HTTP la comunicazione avviene attraverso le porte standard (in genere la porta 80) e quindi non ci sono problemi con i firewall.
L’amministratore può controllare il traffico in base all’intestazione HTTP SOAPAction che specifica il metodo che si vuole richiamare (SOAPAction: urn:host-com:applicazione#metodo
); il metodo indicato nell’intestazione deve ovviamente corrispondere a un metodo indicato nel body.
Per la sicurezza dei dati trasportati basta usare un protocollo sicuro come https.