
Web服务简介
▲ 什么是Web服务
Web服务即Web Service。
Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。
根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。
Web服务组成如下图所示:

▲ Web服务三要素
● SOAP
一个基于XML的可扩展消息信封格式,需同时绑定一个传输应用协议。这个协议通常是HTTP或HTTPS,但也可能是SMTP或XMPP等其他协议。
SOAP协议有SOAP1.1与SOAP1.2两种主要的版本,SOAP可以运行在任何其他应用协议之上。
● WSDL
一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。
可以看成是Web服务的使用说明书。
● UDDI
一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。
UDDI旨在将全球的WEB服务资源进行共享,促进全球经济合作。但是使用WEB服务并不是必须要使用UDDI,因为很多时候使用者已经知道了WEB服务地址就可以进行调用。
这些标准由这些组织制订:W3C负责XML、SOAP及WSDL;OASIS负责UDDI。
▲ SOAP
1.SOAP构建模块
一条SOAP消息就是一个普通的XML文档,包含下列元素:
● 必需的Envelope元素,可把此XML文档标识为一条SOAP消息
可选的Header元素,包含头部信息
● 必需的Body元素,包含所有的调用和响应信息
可选的Fault元素,提供有关在处理此消息所发生错误的信息
所有以上的元素均被声明于针对SOAP封装的默认命名空间中:
http://www.w3.org/2001/12/soap-envelope
以及针对SOAP编码和数据类型的默认命名空间:
http://www.w3.org/2001/12/soap-encoding
2.SOAP消息组成
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
...
</soap:Body>
</soap:Envelope>
3.SOAP消息例子
股票查询服务,根据股票名称查询股票价格,返回股票价格。
1)SOAP消息请求:
POST /StockQuote HTTP/1.1
Host: example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://example.com/GetLastTradePrice"
<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:TradePriceRequest xmlns:m="http://example.com/stockquote.xsd">
<tickerSymbol>MSFT</tickerSymbol >
</m:TradePriceRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2)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:TradePriceResult xmlns:m=" http://example.com/stockquote.xsd ">
<price>74.5</price>
</m:TradePriceResult >
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
网友评论