SOAP based webservices uses a special form of XML called SOAP to exchange messages (requests and responses). SOAP originally stood for Simple Object Access Protocol, but now also called as Service Oriented Architecture (SOA) protocol.
SOAP protocol is based on XML and hence platform independent.
Though HTTP is the most commonly used transport protocol with SOAP-based webservices, it is not limited to just HTTP, but can also use other protocols like SMTP, JMS etc.
SOAP message must NOT contain a DTD reference
SOAP message must NOT contain XML Processing Instructions
Components of SOAP message
A SOAP message is an XML document with following elements:
identifies the XML document as a SOAP message
root element of a SOAP message
contains header information
If present, it must be the first child element of the Envelope element.
contains the actual SOAP message (request or response)
containing errors and status information
it must appear as a child element of the Body element.
can only appear once in a SOAP message.
faultcode values must be used in the faultcode element when describing faults:
invalid namespace for the SOAP Envelope element
An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood
message was incorrectly formed or contained incorrect information
problem with the server so the message could not proceed.
A SOAP – based web service will expose some operations
A consumer (client) will make a remote procedure call against the service by invoking one of the operations.
The client sends an HTTP request to the web service (provider) and the request body will be a SOAP message.
On the web server side,
the web service provider process the HTTP request with the help of some java libraries,
extract the SOAP envelope,
determine the requested service operation,
invoke the corresponding java method and then
generate an appropriate SOAP message as response and
return it back to the client.
This message ecxhange pattern (MEP) is called Request-Response.
WSDL is also exchanged as part of every client request. First client requests for the wsdl and get back the wsdl, and then client sends a soap request and gets back a soap response.