Xml 为什么必须通过HTTP发送SOAP消息?
下面是一条演示SOAP请求消息:Xml 为什么必须通过HTTP发送SOAP消息?,xml,soap,network-programming,protocols,webservice-client,Xml,Soap,Network Programming,Protocols,Webservice Client,下面是一条演示SOAP请求消息: HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Header>
<t:SessionOrder
xmlns:t="http://example.com"
xsi:type="xsd:int" mustUnderstand="1">
5
</t:SessionOrder>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<GetStockQuote
xmlns="http://someexample.com">
<Price>MSFT</Price>
</GetStockQuote>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.1200正常
内容类型:text/xml;charset=“utf-8”
内容长度:nnnn
5.
MSFT
我们可以看到,这个SOAP消息被编码为一个网页。为什么我们必须使用HTTP协议?SOAP消息只是一些XML,为什么我们不直接使用XML作为信息交换协议并去掉HTTP头(这样就不用HTTP了)
非常感谢
更新-1
HTTP不是传输级协议。它只是一个应用程序级协议。这与交通无关。实际上,我的问题是向SOAP消息添加HTTP内容的动机是什么 您也可以使用TCP,以前名为.NET远程处理,现在它是WCF的一部分…SOAP可以通过不同的传输发送。HTTP只是其中之一
例如:SMTP、TCP/IP由开发人员为简单对象访问协议选择传输层。XML不是一种网络协议,因此不能仅使用XML传输数据。它必须被包装成某种东西 使用HTTP的动机是通过防火墙。您可以看到,大多数网络IT人员不允许只打开任何端口,但出于某种原因,他们总是允许为网页打开端口80。因为web服务器经过多年的测试,所以保护它们“更容易”。通过使用HTTP,您可以使用一组现有的工具来处理通信协议 概述 SOAP是一种消息传递协议,简而言之,它只是另一种XML语言。
其目的是通过网络进行数据交换。它关注的是这些数据的封装以及发送和接收它们的规则 HTTP是一种应用程序协议,SOAP消息作为HTTP有效负载放置。
虽然有HTTP的开销,但它的优点是它是一个对防火墙开放的协议,被广泛理解和支持。因此,可以通过现有的技术访问和公开web服务 SOAP消息通常通过HTTP进行交换。尽管可以使用其他(应用程序)协议,例如SMTP或FTP,但SOAP规范未指定非HTTP绑定,也不支持非HTTP绑定。
您可以通过原始TCP交换SOAP消息,但是您将拥有不可互操作的web服务(不符合WS-BP) 如今,争论的焦点是为什么SOAP开销很大,而不是通过HTTP(RESTful WS)发送数据 为什么对SOAP使用HTTP? 我将尝试在OP中更详细地回答这个问题,询问为什么将HTTP用于SOAP: 首先,SOAP定义了一种数据封装格式,就是这样。
现在,web上的大部分流量都是通过HTTP进行的。HTTP到处都是文学作品,并由服务器和客户端(即浏览器)的完善基础设施支持。此外,这是一个非常容易理解的协议 创建SOAP的人希望使用这个现成的基础结构和
因此,一家公司在80端口运行Tomcat或JBoss,web服务也可以部署和访问。 不需要在传输层进行编程,健壮的容器可以处理所有其他事情。
最后,防火墙被配置为不限制HTTP流量这一事实是偏爱HTTP的第三个原因 由于HTTP通信通常是允许的,因此客户端/服务器之间的通信更加容易,web服务可以在没有HTTP隧道导致的网络安全阻止问题的情况下运行 SOAP是XML=纯文本,因此防火墙可以检查HTTP主体的内容并相应地进行阻止。但在这种情况下,它们也可以根据内容进行增强,以拒绝或接受SOAP。这一部分似乎让您感到困扰,它与web服务或SOAP无关,也许您应该开始一个关于防火墙如何工作的新线程 话虽如此,HTTP流量不受限制这一事实通常会导致安全问题,因为防火墙基本上是旁路的,这就是应用程序网关出现的原因。
但这与这篇文章无关 总结 因此,总结一下使用HTTP的原因:
所有浏览器都支持HTTP的兼容性和它最广泛使用的互联网协议。SOAP是一种通信协议,指定发送消息的格式。RPC和CORBA存在兼容性和安全性问题,而HTTP与所有浏览器兼容。 现在HTTP通过TCP/IP进行通信。SOAP方法是使用SOAP编码规则编译的HTTP请求/HTTP响应。
使用SOAP,提交给W3C数据的协议可以用XML封装,并使用任意数量的Internet协议进行传输。另一个原因可能是(如果我没记错的话)HTTP也被指定为“黄金标准”