简单对象访问协议

维基百科,自由的百科全书

跳转到: 导航, 搜索
網路協議
應用層
DHCP · DNS · FTP · Gopher · HTTP · IMAP4 · IRC · NNTP · XMPP · POP3 · SIP · SMTP · SNMP · SSH · TELNET · RPC · RTCP · RTP ·RTSP · SDP · SOAP · GTP · STUN · NTP · SSDP · 更多
传输层
TCP · UDP · TLS · DCCP · SCTP · RSVP · PPTP · 更多
网络层
IP (IPv4 · IPv6) ·

ICMP · ICMPv6 · IGMP · RIP ·

OSPF · BGP · IS-IS · IPsec · 更多
数据链路层
802.11 · 802.16 · Wi-Fi · WiMAX · ARP · RARP · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN · 更多
物理层
以太网物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线 · 更多
本模板: 查看  討論  編輯  歷史


简单对象访问协议SOAP,全寫為Simple Object Access Protocol)是一種標準化的通訊規範,主要用于Web服务(web service)中。SOAP的出現是為了簡化網頁服务器(Web Server)在從XML數據庫中提取資料時,無需花時間去格式化頁面,並能夠讓不同應用程式之間透過HTTP通訊協定,以XML格式互相交換彼此的資料,使其與程式語言、平台和硬體無關。此標準由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,並得到IBM,蓮花(Lotus),康柏(Compaq)等公司的支持,於2000年提交給全球資訊網聯盟World Wide Web Consortium;W3C),目前 SOAP 1.1 版是業界共同的標準,屬於第二代的XML協定(第一代具主要代表性的技術為XML-RPC以及WDDX)。

用一个简单的例子来说明 SOAP 使用过程,一个 SOAP 消息可以发送到一个具有 Web Service 功能的 Web 站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个 XML 格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。

  • SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
  • SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;
  • SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;
  • SOAP绑定(binding),使用底层协议交换信息。

目录

[编辑] 历史

SOAP曾经代表“Simple Object Access Protocol”,但是这种缩写已经在标准的1.2版后被废止了。1.2版在2003年6月24日成为W3C的推荐版本。这种缩写容易与SOA——Service-oriented architecture产生歧义,虽然它们之间存在非常大的差异。

SOAP是在1998年由Dave Winer, Don Box,Bob Atkinson 和 Mohsen Al-Ghosein 设计的。当时是将其作为一种对象访问协议。现在,SOAP规范是由万维网联盟XML工作组进行维护的。

[编辑] SOAP 消息实例

[编辑] Request

<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>

[编辑] Response

<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>

[编辑] 参见

[编辑] 外部链接

个人工具