写点什么

Web Service 进阶 (三)HTTP-GET, HTTP-POST and SOAP 的比较

  • 2022 年 6 月 05 日
  • 本文字数:1803 字

    阅读完需:约 6 分钟

Web Service进阶(三)HTTP-GET, HTTP-POST and SOAP的比较

XML Web Service 支持三种协议来与用户交流数据。这三种协议分别是:

1.SOAP:Simple Object Access Protocol

2.HTTP-GET

3.HTTP-POST

1.首先我们先来理解一下这三者的大概定义。

在这三种协议中,SOAP 是 XML Web Service 最常用到的连接协议。与 HTTP 相比,SOAP 显的更为复杂,但却拥有更强的接受能力。SOAP 是一种以 XML 为基础的协议,它提供一种将数据打包(Packaging)和编码(Encoding)的方法,以用于网络的数据传输。任意一个用户都可以使用 SOAP 协议与任何一个 XML Web Service 进行通信,甚至于说这个 XML Web Service 不是建立在.NET 平台上的,比如说 Java,我们都可以利用 SOAP 来进行数据传输。因此可见,SOAP 也是 Language Independent.(语言独立性)。

HTTP(Hypertext Transfer Protocol) 已经是众所周知的协议了,它是 XML Web Service 数据传输的标准,这包括了在使用 SOAP 传输数据的时候。HTTP 将 SOAP 消息压缩,然后以它的形式进行网络传输。然而当我们谈及在 XML Web Service 下使用 HTTP-GET 和 HTTP-POST 的时候,我们实事上在谈有关单独使用 HTTP 调用 XML Web Service 中的方法的能力,这里我说的单独使用,指的是不使用 SOAP。

在 HTTP 中,GET 和 POST 并不是一种协议,它们是可以用来与 Web Service 交互的几种方法中其中两种。然而,这二种方法传送参数和数据的能力使它们变成了一种简单的,非常适合用来调用 XML Web Service 的工具。

2.HTTP-GET 和 HTTP-POST 的比较

Http get 与 post 的区别

  • 1.GET 请求的数据会附在 URL 之后(就是把数据放置在 HTTP 协议头中),以?分割 URL 和传输数据,参数之间以 &相连,如: login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用 BASE64 加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX 中的 XX 为该符号以 16 进制表示的 ASCII。 

  •  POST 把提交的数据放置在是 HTTP 包体中。

  • 2.GET 方式提交的数据最多只能是 1024 字节(因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟 URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE 对 URL 长度的限制是 2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。),理论上 POST 没有限制,可传较大量的数据。

  • 3.在 ASP 中,服务端获取 GET 请求参数用 Request.QueryString,获取 POST 请求参数用 Request.Form。在 JSP 中,用 request.getParameter(\”XXXX\”)来获取,虽然 jsp 中也有 request.getQueryString()方法,但使用起来比较麻烦,比如:传一个 test.jsp?name=hyddd&password=hyddd,用 request.getQueryString()得到的是:name=hyddd&password=hyddd。

  • 4.POST 的安全性要比 GET 的安全性高。比如:通过 GET 提交数据,用户名和密码将明文出现在 URL 上,因为

  • (1)登录页面有可能被浏览器缓存;

  • (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了;

  • (3)除此之外,使用 GET 提交数据还可能会造成 Cross-site request forgery 攻击。

3.HTTP 和 SOAP 的比较

    HTTP-GET 和 HTTP-POST 提供了一个简单的与 XML Web Service 交互的工具,与 SOAP 相比,它有以下几点好处:

   1.能够非常容易的创建正确的 HTTP-GET 和 HTTP-POST 消息,当面向的客户是不能使用 SOAP 的客户时,HTTP-GET 和 HTTP-POST 是最好的选择。

   2.响应 HTTP-GET 和 HTTP-POST 的消息,并不需要复杂的 XML 处理。响应之中包括了 XML,但它有一个简单的框架并能够轻易的利用一般的技术处理响应。这些特点使 HTTP-GET 和 HTTP-POST 对于不支持 XML 的平台来说,变的异常的有用。

   3.HTTP-GET 和 HTTP-POST 消息比起 SOAP 消息来说,更为简单。这有利于提高整体的性能。

   然而,有得必有失,有好必有坏,它们也存在不可忽略的缺点:

   4.不能够利用 HTML 调用 XML Web Service 中的以复杂数据类型为参数的方法

   5.你可以调用 XML Web Service 中返回值为复杂数据类型的方法,但是响应将仅包括复杂数据类型中各个区域中的名字/值,并且返回的值并没有结构可言。你必须手动的将数据解压缩到 WSDL 文件。

   6.在 HTTP 中,你不能使用 reference 进行参数的传输。

   7.使用 HTTP 与 XML Web Service 进行交流,不是一个 agreed-to 工业标准技术。虽然 HTTP 会在 ASP.NET Web Application 中与 XML Web Service 正常工作,但不保证它在其它的环境下正常工作。

发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Web Service进阶(三)HTTP-GET, HTTP-POST and SOAP的比较_soap_No Silver Bullet_InfoQ写作社区