soap web service wsdl及soapui

整了一段時間的web service,記錄並分享一下我的收穫.

假設一個需求,我們要驗證用戶登錄,用戶在客戶端(一般爲瀏覽器)填寫用戶名和密碼,經瀏覽器組成一個HTTP請求,發送到服務器。瀏覽器發送的包格式可能類似這樣:

HTTP/1.1 200 OK
Date: Sat, 23 May 2009 11:43:24 GMT
Server: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/0.9.8o PHP/5.2.12
X-Powered-By: PHP/5.2.12
Content-Length: 315
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8

username=abc&password=123

服務器端解析這個請求,並取出用戶名和密碼進行驗證。在php下,我們這麼取出:

$name=$_POST['username'];
$pass=$_POST['password'];
//使用取到變量並進行驗證


現在來看看這種方式的缺點
1、客房端需要瀏覽器且沒有一個統一的標準,不同的用戶組成的請求包不同,不易調試及移植。
2、服務器端需要安裝類似apache的服務器軟件及php來處理請求。如果我想把這樣的應用由BS架構移成CS架構,非常複雜。

後來,人們就使用一這樣的方式:
同樣,發用戶名和密碼到服務器,數據包成這樣:

HTTP/1.1 200 OK
Date: Sat, 23 May 2009 11:43:24 GMT
Server: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/0.9.8o PHP/5.2.12
X-Powered-By: PHP/5.2.12
Content-Length: 315
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://server.ws.cmsms.ultrapower.com/">
<soapenv:Body>
<ser:getLinkAuth>
<username>abc</username>
<password>123</password>
</ser:getLinkAuth>
</soapenv:Body></soapenv:Envelope>


可以看到,爲了交換兩個字串,發送了一個XML格式的字串,有用的數據,就是那個abc和123.
服務器端返回的響應同樣,包含一個XML字串.
爲了規定請求和響應的XML字串的格式,人們又定義了WSDL文件.這樣,我們只要得到一個WSDL文件,就能知道客戶端請求和服務器端響應是什麼格式,按照WSDL的規定做好請求或響應就可以了,而不用管對方是怎麼實現的.

續:[url]http://baiyuxiong.iteye.com/blog/945386[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章