WebService概述Word格式文档下载.docx
《WebService概述Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《WebService概述Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
什么是SOAP
SOAP指简单对象访问协议,它是一种基于XML的消息通讯格式,用于网络上,不同平台,不同语言的应用程序间的通讯。
可自定义,易于扩展。
一条SOAP消息就是一个普通的XML文档,包含下列元素:
•Envelope元素,标识XML文档一条SOAP消息
•Header元素,包含头部信息的XML标签
•Body元素,包含所有的调用和响应的主体信息的标签
•Fault元素,错误信息标签。
以上的元素都在SOAP的命名空间中声明;
SOAP的语法规则
•SOAP消息必须用XML来编码
•SOAP消息必须使用SOAPEnvelope命名空间
•SOAP消息必须使用SOAPEncoding命名空间
•SOAP消息不能包含DTD引用
•SOAP消息不能包含XML处理指令
SOAP消息的基本结构
Java代码
1.<
?
xml
version="
1.0"
>
2.<
soap:
Envelope
3.xmlns:
soap="
"
4.soap:
encodingStyle="
5.<
Header>
6.
...
7.
8.<
/soap:
9.<
Body>
10.
11.
12.
<
Fault>
13.
14.
15.
16.<
17.<
Envelope>
xmlversion="
Envelope
xmlns:
...
<
SOAPEnvelope元素
Envelope元素是SOAP消息的根元素。
它指明XML文档是一个SOAP消息。
它的属性xmlns:
soap的值必须是。
encodingStyleυ属性,语法:
URI"
encodingStyle属性用于定义文档中使用的数据类型。
此属性可出现在任何SOAP元素中,并会被应用到元素的内容及元素的所有子元素上。
5.
Message
information
goes
here
Messageinformationgoeshere
SOAPHeader元素
∙actor属性,语法soap:
actor="
通过沿着消息路径经过不同的端点,SOAP消息可从某个发送者传播到某个接收者。
并非SOAP消息的所有部分均打算传送到SOAP消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。
SOAP的actor属性可被用于将Header元素寻址到一个特定的端点。
∙mustUnderstand属性,语法soap:
mustUnderstand="
0|1"
SOAP的mustUnderstand属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。
假如您向Header元素的某个子元素添加了"
1"
,则要求处理此头部的接收者必须认可此元素。
6.<
m:
Trans
7.xmlns:
m="
8.soap:
9.soap:
“
234<
/m:
Trans>
10.<
11....
12....
13.<
Trans
“>
...
SOAPBody元素
必需的SOAPBody元素可包含打算传送到消息最终端点的实际SOAP消息。
Body元素中既可以包含SOAP定义的命名空间中的元素,如Fault,也可以是用户的应用程序自定义的元素。
以下是一个用户定义的请求:
GetPrice
Item>
Apples<
8.
GetPrice>
GetPricexmlns:
上面的例子请求苹果的价格。
请注意,上面的m:
GetPrice和Item元素是应用程序专用的元素。
它们并不是SOAP标准的一部分。
而对应的SOAP响应应该类似这样:
GetPriceResponse
Price>
1.90<
GetPriceResponse>
xmlversion="
GetPriceResponsexmlns:
SOAPFault元素
Fault元素表示SOAP的错误消息。
它必须是Body元素的子元素,且在一条SOAP消息中,Fault元素只能出现一次。
Fault元素拥有下列子元素:
常用的SOAPFaultCodes
HTTP协议中的SOAP实例
下面的例子中,一个GetStockPrice请求被发送到了服务器。
此请求有一个StockName参数,而在响应中则会返回一个Price参数。
此功能的命名空间被定义在此地址中:
"
∙SOAP请求:
(注意HTTP的Head属性)
1.POST
/InStock
HTTP/1.1
2.Host:
3.Content-Type:
application/soap+xml;
charset=utf-8
4.Content-Length:
XXX
7.<
8.xmlns:
Body
GetStockPrice>
StockName>
IBM<