雖然現在都是http的api,但是有些老項目依然用的是webservice,如果碰到了也需要用webservice來調用。所以像這種可能會用到的知識,花一秒鐘搞懂概念就行,用到的時候再說。
webservice(SOAP)與HTTP接口的區別
什麼是web service?
soap請求是HTTP POST的一個專用版本,遵循一種特殊的xml消息格式Content-type設置爲: text/xml任何數據都可以xml化。
爲什麼要學習web service?
大多數對外接口會實現web service方法而不是http方法,如果你不會,那就沒有辦法對接。
web service相對http (post/get)有好處嗎?
- 接口中實現的方法和要求參數一目瞭然
- 不用擔心大小寫問題
- 不用擔心中文urlencode問題
- 代碼中不用多次聲明認證(賬號,密碼)參數
- 傳遞參數可以爲數組,對象等…
web service相對http(post/get)快嗎?
由於要進行xml解析,速度可能會有所降低。
web service 可以被http(post/get)替代嗎?
完全可以,而且現在的開放平臺都是用的HTTP(post/get)實現的。
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> |
SOAP 響應:
HTTP/1.1 200 OK 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:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> |