Android開發之WebService介紹
轉自http://blog.csdn.net/lyq8479/article/details/6420398
經常有網友問:“在Android平臺如何呼叫WebService”?經過溝通我發現,甚至有些朋友連什麼是WebSerivce都不知道就在問怎麼使用,更別說和WebService有關的SOAP、WSDL這類“火星”名詞了。所以,我就想在講解Android平臺如何呼叫WebSerivce之前,先來介紹下WebService,看看它到底有多神祕。
記得我的碩士論文題目中就包含“Web Service”這個詞,當時還是花了大量時間去研究Web Service在系統整合、企業應用整合方面的應用;在工作中,接觸的幾個專案全都用到了Web Service;現在在工作之餘抽點時間學習Android,又是Web Service。看來Web Service真是無處不在,有程式語言的地方,總能找到它的身影(提示:如果你以前沒接觸過WebService,這裡需要知道WebService並不是Android的專利,10幾年前就已經出現了)。
根據W3C的定義,Web Services(Web服務)是一個用於支援網路間不同機器互操作的軟體系統,它是一種自包含、自描述和模組化的應用程式,它可以在網路中被描述、釋出和呼叫,可以將它看作是基於網路的、分散式的模組化元件。
Web Services是建立在通用協議的基礎之上,如HTTP、SOAP、UDDI、WSDL等,這些協議在作業系統、程式語言和物件模型的選擇上沒有任何傾向,因此有著很強的生命力。
Web Services的優勢在於提供了不同應用程式平臺之間的互操作,它使得基於元件的開發和Web相結合的效果達到最佳。它是基於HTTP協議的,呼叫請求和迴應訊息都可以穿過防火牆,不需要更改防火牆的設定,這樣就避免了使用特殊埠進行通訊時無法穿越防火牆的問題。
簡單的理解:通常我們所說的WebService都是遠端的某個伺服器對外公開了某種服務,或者理解為對外公開了某個功能或者方法,而我們可以通過程式設計來呼叫該服務以獲得我們需要的資訊。例如:www.webxml.com.cn對外公開了手機號碼歸屬地查詢服務,我們只需要在呼叫該服務時傳入一個手機號段(號碼),就能立即獲取該號段的歸屬地資訊。
更通俗的理解:通過使用WebService,我們能夠像呼叫本地方法一樣去呼叫遠端伺服器上的方法。我們並不需要關心遠端的那個方法是Java寫的,還是PHP或C#寫的;我們並不需要關心遠端的方法是基於Unix平臺,還是Windows平臺,也就是說WebService與平臺和語言無關。
說到WebSerivce,就必須要知道SOAP和WSDL,它們到底和WebSerice有著怎麼的關係?上面已經提到,Web Services是建立在HTTP、SOAP、WSDL等通用協議的基礎之上。
SOAP(Simple Object Access Protocol,簡單物件訪問協議)是一種輕量級的、簡單的、基於XML的協議,被設計用於在分散式環境中交換格式化和固化資訊的簡單協議。也就是說,要進行通訊,進行資料訪問傳輸,就必須依賴於一定的協議,而SOAP正是WebService通訊中所依賴的一種協議。目前經常使用的SOAP協議有兩個版本:SOAP 1.1 和 SOAP 1.2。
WSDL(Web Services Description Language,即Web服務描述語言)是一種用來描述Web服務的XML語言,它描述了Web服務的功能、介面、引數、返回值等,便於使用者繫結和呼叫服務。它以一種和具體語言無關的方式定義了給定Web服務呼叫和應答的相關操作和訊息。
WSDL是我們能夠實實在在看到的東西,它是一份xml文件,用於描述某個WebSerivce的方方面面。例如,上面曾提到www.webxml.com.cn網站提供了手機號碼歸屬地查詢的WebSerivce,我們怎麼來使用這個WebSerivce呢?它是基於哪個版本的SOAP協議?呼叫它需要傳入什麼引數?它會返回什麼值?是一個字串還是xml文件?這一系列的問題都能在WSDL中找到答案。上面這個服務的WSDL地址是:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl,在瀏覽器上訪問它,你將會看到如下所示的xml文件:
- <?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
- xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
- xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
- xmlns:tns="http://WebXml.com.cn/"
- xmlns:s="http://www.w3.org/2001/XMLSchema"
- xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
- xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
- targetNamespace="http://WebXml.com.cn/"
- xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a>
- <strong>國內手機號碼歸屬地查詢WEB服務</strong>,提供最新的國內手機號碼段歸屬地資料,每月更新。<br />
- 使用本站 WEB 服務請註明或連結本站:<a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">http://www.webxml.com.cn/
- </a>感謝大家的支援!<br />
- </wsdl:documentation>
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
- <s:element name="getMobileCodeInfo">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="mobileCode" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="getMobileCodeInfoResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="getMobileCodeInfoResult" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- ... ...
- </s:schema>
- </wsdl:types>
- ... ...
- </wsdl:definitions>
看到WSDL後,我們能從中得到哪些資訊呢?
1)從第08行可以看出,該WebSerivce所基於的SOAP協議版本是SOAP1.2;
2)從第10行可以看出,該WebSerivce的名稱空間(NameSpace)是http://WebXml.com.cn/;
3)從第20行可以看出,我們查詢手機號碼歸屬地時要呼叫的方法名稱為:getMobileCodeInfo;
4)從第23-24行可以看出,我們呼叫getMobileCodeInfo方法時需要傳入兩個引數:mobileCode和userId;
5)從第31行可以看出,呼叫getMobileCodeInfo方法後,將返回一個名為getMobileCodeInfoResult的結果字串。
到這裡,我們已經初步認識了WebSerivce,以及SOAP和WSDL。這些知識具備後,就可以開始WebService相關的開發工作了。下一篇文章將講解如何在Android平臺程式設計呼叫上面的這個WebSerivce,並取得返回結果。
相關文章
- Android之Zygote介紹AndroidGo
- Android開發 - 掌握ConstraintLayout(二)介紹AndroidAI
- Kotlin on Android 開發環境介紹KotlinAndroid開發環境
- webservice簡介Web
- Android四大元件之——BroadcastReceiver介紹Android元件AST
- iOS開發- reloadData方法介紹iOS
- 陀螺世界商城開發(介紹)
- ModStartCMS模組開發介紹
- android開發 之 Bolts-AndroidAndroid
- Android API開發之OpenGL開發之Android OpenGL STL詳解AndroidAPI
- Android技能樹 — 網路小結(4)之socket/websocket/webserviceAndroidWeb
- Web專案開發介紹及實戰專案介紹Web
- Elasticsearch之介紹Elasticsearch
- Python學習系列之十大Web開發工具介紹!PythonWeb
- Web開發小工具介紹Web
- Apple開發者賬號介紹APP
- SOLIDWORKS二次開發介紹Solid
- 從零開始開發Android相機app(三)簡單介紹影象濾鏡功能AndroidAPP
- JNPF快速開發平臺的四大開發框架介紹之工作流開發框架框架
- Android Jetpack 助推應用開發 | 中文字幕視訊介紹AndroidJetpack
- Android系統介紹與框架Android框架
- Android模組化框架介紹Android框架
- Android 輸入系統介紹Android
- Android 應用程式元件介紹Android元件
- Android 動畫 介紹與使用Android動畫
- VS Code外掛開發介紹(二)
- iOS混合開發庫(GICXMLLayout)一、介紹iOSXML
- 介紹一個軟體開發工具
- Flutter混合開發二-FlutterBoost使用介紹Flutter
- Harmony 應用開發常用元件介紹元件
- Three.js開發指南(1):介紹JS
- iOS開發-UITabbarController的介紹與使用iOSUItabBarController
- 元宇宙鏈遊開發與介紹元宇宙
- rk3568核心板開發介紹
- RK3288最新開源開發板介紹
- SAP工作流介紹之ABAP Business Workflow介紹
- Android 常用佈局 介紹與使用Android
- Android RxJava:基礎介紹與使用AndroidRxJava
- Android多渠道打包相關介紹Android