之前写web service程序时,因为框架已经写好了,网上查一下就知道怎么写了,但原理还不是很了解,如一些规范:soap,wsdl等,现在有时间慢慢整理一下。
1. SOAP
soap的学习过程:
(1)soap的简单介绍:http://zh.wikipedia.org/wiki/SOAP
http://msdn.microsoft.com/zh-cn/library/ms951268.aspx
(2)学习XML Schema语法:http://www.w3school.com.cn/schema/index.asp
(3)学习SOAP的知识:http://www.w3school.com.cn/soap/index.asp
http://wenku.baidu.com/view/b38a108ad0d233d4b14e6924.html
(4)soap测试工具:soapUI,可以直观的看到请求的xml数据内容,很不错的一个工具,支持并发测试等等。
soapUI的使用介绍:http://wenku.baidu.com/view/8039e4fff705cc17552709ed.html
简而言之:HTTP + XML = SOAP
SOAP的请求
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?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:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
HTTP post方式的请求:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/x-www-form-urlencoded; charset=gb2312
Content-Length: 10
username=zhangsan&passwd=123456
解释HTTP post:
(1) 第一行为请求行,我们以post的方式发送一个http1.1协议的请求,请求路径是/InStock
(2)第二行到第四行为请求头,即请求的附加信息,具体可看一下张孝祥老师的HTTP协议讲解视频,很经典的。
(3)第五行为空行,用来区分请求头,请求体内容的。
(4)第六行为请求体,即我们页面上输入的用户名,密码是以[key=value;]格式来显示的。
HTTP,和SOAP发送的请求对比中可以看出,主要的区别体现在请求体上;soap请求的请求体是符合soap规范的结构化的xml数据。
总结:SOAP就是在http上传输xml格式化的数据。
2. WSDL
wsdl学习过程:
(1) 基础知识,百度知道:http://baike.baidu.com/view/160660.html?wtp=tt
基维百科:http://zh.wikipedia.org/wiki/WSDL
(2)wsdl规范的语法:http://www.w3school.com.cn/wsdl/index.asp
(3)wsd的详解:http://blog.youkuaiyun.com/sandayh/article/details/7081615
总结:wsdl是对一个web服务的描述,一个人和计算机都能看懂的web服务接口文档,我们可以根据该接口文档生成代码进行开发。
3. 对SOAP,WSDL有了了解之后,可以学一下soap的开发:AXIS是一个soap服务器,提供了客户端,服务器的实现。