Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android開發之WebService介紹

Android開發之WebService介紹

編輯:Android開發教程

經常有網友問:“在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,並取得返回結果。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved