Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android_WebServices_介紹

Android_WebServices_介紹

編輯:關於Android編程

 

1.WebService的介紹

WebService為基於Web的服務,它使用Web(HTTP)方式,接收和響應請求,從而實現遠程調用.
(1).從WebService的工作模式上理解的話,它跟普通的Web程序(比如ASP、JSP等)並沒有本質的區別,都是基於HTTP傳輸協議的程序;

(2).WebService所使用的數據是基於XML格式的和SOAP協議。其中SOAP即簡單對象訪問協議(Simple Object Access Protocal)協議是一種基於XML編碼規范的文本協議。

 

2.WebService三要素

 
WebService三要素:SOAP、WSDL(WebServices Description Language)、UDDI(Universal Description Discovery and Integration)

(1).SOAP

1).SOAP介紹

SOAP消息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似於請求 / 應答的模式。所有的 SOAP消息都使用 XML 編碼。一條 SOAP消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特征庫的優點。在HTTP上傳送 SOAP 並不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不僅限於 HTTP 協議綁定。SOAP也可以綁定到TCP和UDP協議上。

2).SOAP消息格式



    
    

    
    

3).語法規則

一條 SOAP 消息就是一個普通的 XML 文檔,包含下列元素:
必需的 Envelope 元素,可把此 XML 文檔標識為一條 SOAP 消息
可選的 Header 元素,包含頭部信息
必需的 Body 元素,包含所有的調用和響應信息
可選的 Fault 元素,提供有關在處理此消息所發生錯誤的信息

(2).WSDL

Web Service描述語言WSDL 就是用機器能閱讀的方式提供的一個正式描述文檔而基於XML的語言,用於描述Web Service及其函數、參數和返回值。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的。

(3).UDDI

UDDI 是一種目錄服務,企業可以使用它對 Web services 進行注冊和搜索。UDDI,英文為 Universal Description, Discovery and Integration,可譯為“通用描述、發現與集成服務”

 

 
 
 
 

3.在Android上的應用

在Android平台調用WebService需要依賴於第三方類庫ksoap2,它是一個SOAP Web service客戶端開發包。KSoap2 Android 是Android平台上一個高效、輕量級的SOAP開發包,等同於Android平台上的KSoap2的移植版本。目前最新版本ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar,下載地址是:http://code.google.com/p/ksoap2-android/

 

4.簡單調用實例

 

public void getRemoteInfo(String phoneSec) {
	String nameSpace = http://WebXml.com.cn/;
	String methodName = getMobileCodeInfo;
	String endPoint = http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx;
	String soapAction = http://WebXml.com.cn/getMobileCodeInfo;

	// 指定WebService的命名空間和調用的方法名
	SoapObject rpc = new SoapObject(nameSpace, methodName);
	rpc.addProperty(mobileCode, phoneSec);
	rpc.addProperty(userId, );
	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
	envelope.bodyOut = rpc;
	envelope.dotNet = true;

	HttpTransportSE transport = new HttpTransportSE(endPoint);
	try {
		// 調用WebService
		transport.call(soapAction, envelope);
		// 獲取返回的數據
		SoapObject object = (SoapObject) envelope.bodyIn;
		// 獲取返回的結果
		final String result = object.getProperty(0).toString();
		toast(result);
	} catch (Exception e) {
		e.printStackTrace();
		toast(e.getMessage());
	}
}

 

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