SOAP 1.1、SOAP 1.2、HTTP GET和HTTP POST方法在Android中有何不同?

78
我正在编写 SOAP Web 服务的代码,想了解在 Android 中 SOAP 1.1、SOAP 1.2、HTTP GET 和 HTTP POST 方法的区别及其首选方法。请提供使用 URL 或代码的示例。

谢谢


这是官方W3C SOAP 1.2入门指南相关章节的链接:SOAP 1.1和SOAP 1.2之间的变化 - informatik01
2个回答

92

SOAP版本的差异

SOAP 1.1 和 SOAP 1.2 都是万维网联盟(W3C)标准。网络服务可以部署支持不仅SOAP 1.1,还支持SOAP 1.2。SOAP 1.2 对于 SOAP 1.1 的一些更改是显著的,而其他的更改则较小。

SOAP 1.2 规范引入了对 SOAP 1.1 的多个更改。这些信息并不是对于 SOAP 1.1 和 SOAP 1.2 所有新特性或更改的详细描述。相反,这些信息重点介绍了当前版本的 SOAP 之间较为重要的差异。

其中,对 SOAP 1.2 规范进行的显著更改包括以下更新:

  • SOAP 1.1 基于 XML 1.0。SOAP 1.2 基于 XML Information Set(XML Infoset)。
  • XML Infoset 提供了一种用 XSD 模式描述 XML 文档的方式。但是,Infoset 并不一定使用基于 SOAP 1.1 的 XML 1.0 序列化来序列化文档。这种新的描述 XML 文档的方式有助于揭示其他序列化格式,例如二进制协议格式。您可以使用二进制协议格式将消息压缩成紧凑格式,其中可能不需要某些冗长的标记信息。
  • 在 SOAP 1.2 中,您可以使用与底层协议绑定的规范来确定在底层协议数据单元中使用哪种 XML 序列化。SOAP 1.2 - Part 2 中指定的 HTTP 绑定使用 XML 1.0 作为 SOAP 消息 Infoset 的序列化。
  • SOAP 1.2 提供了正式定义传输协议的能力,而不仅仅是使用 HTTP,只要供应商符合 SOAP 1.2 中定义的绑定框架即可。虽然 HTTP 是无处不在的,但它并不像 TCP/IP 和 MQ 等传输方式那样可靠。
SOAP 1.2提供了更明确的SOAP处理模型定义,消除了许多不确定性,从而避免在缺乏Web服务互操作性(WS-I)配置文件的情况下导致互操作性错误的可能性。目标是显着降低使用SOAP 1.2实现的不同厂商之间的互操作性问题的几率。
Java SOAP with Attachments API(SAAJ)也可以作为发出SOAP请求的简单机制独立存在。SAAJ规范的主要变化是能够表示SOAP 1.1消息和附加的SOAP 1.2格式消息。例如,SAAJ版本1.3引入了一组新的常量和方法,更有利于SOAP 1.2(例如getRole(),getRelay())在SOAP头元素上。还有SAAJ工厂的其他方法,用于创建适当的SOAP 1.1或SOAP 1.2消息。
SOAP 1.2的信封和编码架构的XML命名空间已更改。这些更改将SOAP处理器与SOAP 1.1和SOAP 1.2消息区分开,并支持SOAP模式中的更改,而不影响现有实现。
Java XML Web Services体系结构(JAX-WS)引入了同时支持SOAP 1.1和SOAP 1.2的能力。因为JAX-RPC引入了在运行时遍历SOAP消息所需的操作要求,所以需要以适当的SOAP上下文表示此消息。在JAX-WS中,许多附加增强功能来自对SAAJ 1.3的支持。
对于特定的Android设备,没有定义POST和GET方法...但是这里有区别。
GET方法将名称/值对附加到URL,允许您检索资源表示形式。这个方法的一个大问题是URL的长度有限(大约3000个字符),如果页面表单中有太多的内容,会导致数据丢失,因此该方法仅在参数数量较少时有效。

这对于我意味着什么?基本上,这使得在大多数情况下,GET方法对大多数开发人员毫无用处。另一种看待它的方式是:如果表单使用大量参数或参数包含大量数据,则URL可能会被截断(鉴于今天的数据中心网站,这很可能会发生)。此外,通过URL传递的参数在浏览器地址栏中可见(呀!)这并不是任何敏感(甚至非敏感)数据显示的最佳位置,因为你只是在引导好奇的用户去搞砸它。

POST GET方法的替代方法是POST方法。该方法将名称/值对封装在HTTP请求的正文中,这样可以获得更清晰的URL,并且对表单输出没有大小限制,基本上选择哪一种方法都很容易。POST也更加安全,但肯定不是安全的。虽然HTTP完全支持CRUD,但HTML 4仅支持通过其各种元素发布GET和POST请求。这种限制阻碍了Web应用程序充分利用HTTP,为了解决这个问题,大多数应用程序重载POST来处理除资源检索以外的所有事项。

原始IBM来源链接


42
这个答案是IBM的版权所有,还是反过来? http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/cwbs_soapverdiffs.html - timomeinen
链接已失效。 - JJCV

20

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