概念——SOAP(简单对象访问协议)

本文内容

  • SOAP 概述
  • SOAP 传输方式
  • SOAP 语法规则
  • SOAP 消息实例

SOAP 概述


SOAP(Simple Object Access Protocol,简单对象访问协议)是一种标准化的通讯规范,主要用于 Web 服务(Web Service)。SOAP 是为了简化网页服务(Web Server)。从 XML 提取数据时,无需花时间去格式化页面。让不同的应用程序之间通过 HTTP 协议,以 XML 格式交换数据,这样,与编程语言、平台和硬件无关。

SOAP 由 IBM、Microsoft、UserLand 和 DevelopMentor 在 1998 年共同提出,并得到 IBM、Lotus、Compaq 等公司的支持,于 2000 年提交 W3C。目前 SOAP 1.1 版是业界标准,是第二代 XML 协定。第一代的主要代表为 XML-RPC 和 WDDX。

SOAP 的一个简单例子:假设,有一个房价的数据库,SOAP 消息参数中指定房价查询信息,Web 服务点根据该查询信息,返回一个 XML 格式信息,其中包含查询结果(如价格、位置、特点,或者其他信息)。由于 XML 数据是一种结构化文本标准,可以被第三方使用。

SOAP 传输方式


SOAP 使用因特网的应用层协议作为其传输协议。HTTP 或 SMTP 协议都可以用来传输 SOAP 消息,但由于 HTTP 在现在的因特网中工作得很好,特别是在网络防火墙下仍然正常工作,所以被广泛采纳。

SOAP 也可以在 HTTPS 上传输。

SOAP 语法规则


  • SOAP 消息必须使用 XML 编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

SOAP 消息实例


请求
<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>
回应
<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
  <soapenv:Header>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:From>
      <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
    </wsa:From>
    <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

原文地址:https://www.cnblogs.com/liuning8023/p/2613620.html