title: Why does a SOAP message have to be sent over HTTP?
body: <p>Below is a demo SOAP request message:</p>
  
  <pre><code>HTTP/1.1 200 OK
  Content-Type: text/xml; charset="utf-8"
  Content-Length: nnnn
  
      &lt;SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
     &lt;SOAP-ENV:Header&gt;
         &lt;t:SessionOrder
           xmlns:t="http://example.com"
           xsi:type="xsd:int" mustUnderstand="1"&gt;
             5
         &lt;/t:SessionOrder&gt;
     &lt;/SOAP-ENV:Header&gt;
     &lt;SOAP-ENV:Body&gt;
         &lt;GetStockQuote
           xmlns="http://someexample.com"&gt;
             &lt;Price&gt;MSFT&lt;/Price&gt;
         &lt;/GetStockQuote&gt;
     &lt;/SOAP-ENV:Body&gt;
  &lt;/SOAP-ENV:Envelope&gt;
  </code></pre>
  
  <p>And we can see, this SOAP message is encoded as if it is a web page. Why do we have to use the HTTP protocol? SOAP message is just some XML, why not we just use XML as the information exchange protocol and get rid of the HTTP headers (thus leave HTTP alone).</p>
  
  <p>Many thanks.</p>
  
  <h1>Update - 1</h1>
  
  <p>HTTP is not a transport level protocol. It is just a application-level protocol. It has nothing to do with transport. Actually, my question is what's the motive of adding HTTP stuff to a SOAP message? </p>