SOAP协议和HTTP协议的区别?

47

SOAP协议和HTTP协议有什么区别?当我们说“SOAP over HTTP”时,这是什么意思?


1
https://dev59.com/TnRA5IYBdhLWcg3w4iF_ - Gopi
3个回答

64
你可以通过HTTP提供任何内容,如HTML、图像、声音、视频等。SOAP是基于XML的消息编码,通常通过HTTP发送,但也可以通过SMTP甚至FTP发送,尽管我从未见过这样的系统在生产环境中使用。
就像HTTP建立在TCP/IP之上一样,SOAP建立在HTTP之上。层叠层叠...
如果你查看SOAP请求,你可以看到两个层,HTTP头部在顶部,后面是SOAP消息。来自w3schools SOAP tutorial的介绍:
---------  HTTP portion of the message ------ 
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

---------  SOAP portion of the message ------ 
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

以下是更多阅读材料:


HTTP是建立在TCP协议上的,而不是TCP/IP协议,TCP/IP是整个协议栈,其中包括应用层(应用层中有SOAP)。你不能说SOAP是建立在包含SOAP的东西之上的。 - Gab是好人
3
HTTP是基于TCP和IP协议的。在OSI模型中,TCP位于传输层,而HTTP(以及SOAP)位于应用层。请参考https://en.wikipedia.org/wiki/OSI_model。但这并不改变答案。就像屋顶坐落在房子上面一样,SOAP被放置在HTTP之上。你可以说屋顶和房子处于同一层级,但屋顶仍然在房子的上方。 - lreeder
当我们提到TCP/IP时,它不再是7层的OSI模型,而是由4层组成的TCP/IP协议栈。这里的“在...顶部”应该意味着其中一个立即包含了另一个。 - Gab是好人

4
与服务器交互时,请求应以XML编码格式使用SOAP。但在HTTP的情况下,请求可以以HTML、图像、视频等格式发送。SOAP请求使用HTTP协议发送。

1

SOAP代表简单对象访问协议。它基于XML用于发送和接收消息。它在XML中定义。

示例。

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.example/2003/05/soap-envelope/"
soap:encodingStyle="http://www.example.com/2003/05/soap-encoding">

<soap:Body>
  <m:GetPriceResponse xmlns:m="http://www.example.com/prices">
    <m:Price>1.90</m:Price>
  </m:GetPriceResponse>
</soap:Body>

</soap:Envelope> 

代表简单邮件传输协议。简单邮件传输协议是一种可靠和高效地传输电子邮件的方式。用于向收件人的邮箱发送邮件,从而使用各种方法访问他的邮箱中的电子邮件。默认使用端口25。邮件提交的协议相同,但使用端口587。由[SSL]保护的连接,默认使用端口465(非标准,但有时出于遗留原因使用)。我们可以同步或异步地发送消息。会话可以自动管理。

SOAP是语言相关的,但SMTP是语言无关的。 SOAP主要用于XML Web服务。SMTP也使用协议来获取或发布信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接