⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soap规范(1).txt

📁 一个新的采集工具 一个新的采集工具 一个新的采集工具
💻 TXT
📖 第 1 页 / 共 2 页
字号:
作者:bdsc
email: bdscca@yahoo.ca
日期:2001-7-13 17:02:54
SOAP:简单对象访问协议
(2001-1-1)
摘要 
SOAP是用在分散或分布的环境中交换信息的简单的协议,它是一个基于XML的协议,包括三个部分:封装定义了一个描述消息中包含什么内容以及如何处理它们的框架,编码规则用于表示应用程序定义的数据类型的实例,另外还有一个表示远程过程调用和应答的协定。SOAP被设计为可以与各种其它协议结合使用;但这篇文章仅描述如何将SOAP和HTTP及HTTP扩展框架相结合。 

目录
1. 简介 
1.1 设计目标 
1.2 符号协定 
1.3 SOAP消息举例 
2. SOAP消息交换模型 
3. 与XML的关系 
4. SOAP封装 
4.1.1 SOAP encodingStyle属性 
4.1.2 封装版本模型 
4.2 SOAP头 
4.2.1 使用SOAP头属性 
4.2.2 SOAP actor属性 
4.2.3 SOAP mustUnderstand属性 
4.3 SOAP体 
4.3.1 SOAP头和体的关系 
4.4 SOAP 错误 
4.4.1 SOAP错误代码 
5. SOAP编码 
5.1 XML编码类型规则 
5.2 简单类型 
5.2.1 字符串 
5.2.2 枚举 
5.2.3 字符数组 
5.3 多态 Accessor 
5.4 复合类型 
5.4.1 复合值和对值的引用 
5.4.2 数组 
5.4.2.1 PartiallyTransmitted Arrays 
5.4.2.2 稀疏数组 
5.4.3 一般复合类型 
5.5 缺省值 
5.6 SOAP root属性 
6. 在HTTP中使用SOAP 
6.1 SOAP HTTP请求 
6.1.1 HTTP头中的SOAPAction域 
6.2 SOAP HTTP应答 
6.3 HTTP扩展框架 
6.4 SOAP HTTP举例 
7. 用SOAP表示RPC 
7.1 RPC和SOAP体 
7.2 RPC和SOAP头 
8. 安全考虑 
9. 参考文献 
A. SOAP封装举例 
A.1 请求编码举例 
A.2 应答编码举例 
1. 简介
SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型化信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。 

SOAP包括三个部分 

SOAP封装(见第4节)结构定义了一个整体框架用来表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。 
SOAP编码规则(见第5节)定义了用以交换应用程序定义的数据类型的实例的一系列机制。 
SOAP RPC表示(见第7节)定义了一个用来表示远程过程调用和应答的协定。 
虽然这三个部分都作为SOAP的一部分一起描述,但它们在功能上是相交的。特别的,封装和编码规则是在不同的名域中定义的,这种模块性的定义方法增加了简单性。 

在SOAP封装,SOAP编码规则和SOAP RPC协定之外,这个规范还定义了两个协议的绑定,描述了在有或没有HTTP扩展框架[6]的情况下,SOAP消息如何包含在HTTP消息[5]中被传送。 

1.1 设计目标 
SOAP的主要设计目标是简单性和可扩展性,这意味着传统的消息系统和分布对象系统的某些性质不是SOAP规范的一部分。这些性质包括: 

分布式碎片收集 
成批传送消息 
对象引用(要求分布式碎片收集) 
激活机制(要求对象引用) 
1.2 符号约定 
这篇文章中的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和"OPTIONAL"的解释在RFC-2119 [2]中。 

这篇文章中用到的名域前缀 "SOAP-ENV" 和 "SOAP-ENC"分别与"http://schemas.xmlsoap.org/soap/envelope/" 和"http://schemas.xmlsoap.org/soap/encoding/"关联。 

整篇文档中,名域前缀“xsi”被假定为与URI "http://www.w3.org/1999/XMLSchema-instance“(在XML Schema规范[11]定义)相连。类似的,名域前缀”xsd“被假定为与URI "http://www.w3.org/1999/XMLSchema"(在 [10]中定义)相连。名域前缀”tns“用来表示任意名域。所有其它的名域前缀都只是例子。 

名域URI的基本形式”some-URI“表示某些依赖于应用程序或上下文的URI[4]。

这个规范用扩展BNF(在RFC-2616[5] 描述)描述某些结构。 

1.3 SOAP消息举例 
在这个例子中,GetLastTradePrice SOAP 请求被发往 StockQuote服务。这个请求携带一个字符串参数和ticker符号,在SOAP应答中返回一个浮点数。XML名域用来区分SOAP标志符和应用程序特定的标志符。这个例子说明了在第6节中定义的HTTP绑定。如果SOAP中管理XML负载的规则完全独立于HTTP是没有意义的,因为事实上该负载是由HTTP携带的。

在Appendix A中有更多的例子。 

例1 在HTTP请求中嵌入SOAP消息 

POST /StockQuote HTTP/1.1
Host: 
www.stockquoteserver.com
Content-Type: text/xml; 
charset="utf-8"
Content-Length: nnnn
SOAPAction: 
"Some-URI"

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
       <m:GetLastTradePrice xmlns:m="Some-URI">
           <symbol>DIS</symbol>
       </m:GetLastTradePrice>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

下面是一条应答消息,包括HTTP消息,SOAP消息是其具体内容: 

例2 在HTTP应答中嵌入SOAP消息 

HTTP/1.1 200 OK
Content-Type: text/xml; 
charset="utf-8"
Content-Length: 
nnnn

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   <SOAP-ENV:Body>
       <m:GetLastTradePriceResponse xmlns:m="Some-URI">
           <Price>34.5</Price>
       </m:GetLastTradePriceResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

2. SOAP消息交换模型 
SOAP消息从发送方到接收方是单向传送,但正如上面显示的,SOAP消息经常以请求/应答的方式实现。 

SOAP实现可以通过开发特定网络系统的特性来优化。例如,HTTP绑定(见第6节)使SOAP应答消息以HTTP应答的方式传输,并使用同一个连接返回请求。

不管SOAP被绑定到哪个协议,SOAP消息采用所谓的”消息路径“发送,这使在终节点之外的中间节点可以处理消息。 

一个接收SOAP消息的SOAP应用程序必须按顺序执行以下的动作来处理消息: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -