Web Service(SOAP)和HTTP接口的区别详解
什么是web service?
soap请求 (Simple Object Access Protocol,简单对象访问协议) 是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: text/xml任何数据都可以xml化。
SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
SOAP是一个基于XML的协议交换消息,可以使用HTTP来传输这些信息。事实上HTTP是SOAP消息的最常见的传输工具。soap将信息进行XML的序列化后,再用http协议的方式再打包进行传送,传送的方式还是tcp或者udp。做个比喻就好理解了。tcp 和 udp 都是公路,暂且把tcp认为是一般公路,udp高速公路,soap和http就都是汽车,那么soap和http都可以在tcp和udp上跑。说soap可以通过http来传送,实际就是说soap是小轿车,http是装轿车的卡车,把soap的信息装到http里面,然后再运输,当然走的道路还是tcp或udp。说soap可以通过http协议来传输,这句话不太准确,比较准确第说法是:soap信息可以通过http协议包装后通过tcp或udp传输。
SOAP 包括四个部分:
SOAP
它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。
SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。
把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在HTTP上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。
SOAP也可以绑定到TCP和UDP协议上。
为什么要学习web service?
大多数对外接口会实现web service方法而不是http方法,如果你不会,那就没有办法对接。
web service相对http (post/get)有好处吗?
1.接口中实现的方法和要求参数一目了然
2.不用担心大小写问题
3.不用担心中文urlencode问题
4.代码中不用多次声明认证(账号,密码)参数
5.传递参数可以为数组,对象等...
web service相对http(post/get)快吗?
由于要进行xml解析,速度可能会有所降低。
web service 可以被http(post/get)替代吗?
完全可以,而且现在的开放平台都是用的HTTP(post/get)实现的。
有的说法
httpservice通过post和get得到你想要的东西
webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型
当你要调用一个你本服务的内容的时候,不涉及到跨域的问题,你可以使用HttpService的方式。
如果,你需要在后台调用一个其它应用的服务,这个时候,你必须要用webService的方式来调用。
推荐阅读
-
HTTP_HOST 和 SERVER_NAME 的区别详解
-
laravel 配置路由 api和web定义的路由的区别详解
-
HTTP_HOST 和 SERVER_NAME 的区别详解
-
sata2和sata3的接口区别评测图文详解
-
Web Service(SOAP)和HTTP接口的区别详解
-
laravel 配置路由 api和web定义的路由的区别详解
-
荐 HTTP状态码301和302的区别详解
-
http Get和Post的区别_html/css_WEB-ITnose
-
sata2和sata3的接口区别评测图文详解
-
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别图文详解