HTTP is a transport-level protocols and SOAP is a messaging-layer (communication) protocol. SOAP can be used in combination with a variety of transport protocols - including SMTP, JMS, and other protocols in addition to HTTP - and does not depend on any particular network protocol. Although HTTP is a widely used protocol for SOAP, SOAP toolkit vendors have also started providing support for other protocols, like SMTP. SOAP messages may travel across several different transport-layer protocols before they reach their ultimate destination
SOAP decouples the encoding and communications protocol from the runtime environment. Web service can receive a SOAP payload from a remote service, and the platform details of the source are entirely irrelevant.
Anything can generate XML, from Perl scripts to C++ code to J2EE app servers. So, as of the 1.1 version of the SOAP specification, anyone and anything can participate in a SOAP conversation, with a relatively low barrier to entry.
Uses XML to send and receive messages.
SOAP is also a simple way to accomplish remote object/component/service communications. It formalizes the vocabulary definition in a form that's now familiar, popular, and accessible (XML). If you know XML, you can figure out the basics of SOAP encoding pretty quickly.
Uses standard internet HTTP protocol.
SOAP runs over HTTP, which eliminates firewall problems. When using HTTP as the protocol binding, an RPC call maps naturally to an HTTP request and an RPC response maps to an HTTP response.
SOAP is very simple compared to RMI, CORBA, and DCOM because it does not deal with certain ancillary but important aspects of remote object systems.
A protocol for exchanging information in a decentralized and distributed environment.
SOAP is, transport protocol-independent and can therefore potentially be used in combination with a variety of protocols.
The SOAP specification contains no mention of security facilities.
SOAP 1.1 specification does not specify a default encoding for the message body. There is an encoding defined in the spec, but it is not required that you use this encoding to be compliant: Any custom encoding that you choose can be specified in the encodingStyle attribute of the message or of individual elements in the message.
Because SOAP deals with objects serialized to plain text and not with stringified remote object references (interoperable object references, IORs, as defined in CORBA), distributed garbage collection has no meaning.
SOAP clients do not hold any stateful references to remote objects.