国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android開(kāi)發(fā)中Web Service網(wǎng)絡(luò)編程研究

2012-04-29 05:47:22巫志勇
電腦知識(shí)與技術(shù) 2012年20期

巫志勇

摘要:該文介紹了在Android開(kāi)發(fā)中Web Service功能的實(shí)現(xiàn)。并設(shè)計(jì)了一個(gè)國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢的程序,研究通過(guò)Web Ser? vice遠(yuǎn)程調(diào)用來(lái)獲取數(shù)據(jù)的方式。

關(guān)鍵詞:Android;Web Service;ksoap2

中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)20-4904-03

In the Development of Android Web Service Network Programming Research

WU Zhi-yong

(Guangdong Female Polytechnic College, Guangzhou 511450, China)

Abstract: This paper describes the implement of Web Services functionality on Android platform. And design a program for inquiries to phone numbers attribution, to show the way to remote calls Web Service function.

Key words: Android; Web Service; ksoap2

Web Service是一種面向服務(wù)架構(gòu)(Service-oriented architecture,SOA)的技術(shù),目的是實(shí)現(xiàn)不同平臺(tái)的應(yīng)用服務(wù)之間的相互調(diào)用。Android作為一個(gè)市場(chǎng)占有率第一的移動(dòng)操作系統(tǒng),其網(wǎng)絡(luò)功能是最重要的特性之一。在Android開(kāi)發(fā)中通過(guò)Web Service可以方便地實(shí)現(xiàn)不同平臺(tái)之間的方法調(diào)用,從網(wǎng)上獲取數(shù)據(jù)信息和實(shí)現(xiàn)功能擴(kuò)展。Web Service通過(guò)標(biāo)準(zhǔn)的Web協(xié)議提供服務(wù)。

通過(guò)Web Service實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用,獲取數(shù)據(jù)信息,最關(guān)鍵的問(wèn)題是數(shù)據(jù)訪問(wèn)和傳輸?shù)膮f(xié)議規(guī)范。

SOAP協(xié)議(Simple Object Access Protocal,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),它是一個(gè)分布式網(wǎng)絡(luò)環(huán)境下用于信息交換的通訊協(xié)議。在此協(xié)議下,應(yīng)用程序和軟件組件可以通過(guò)標(biāo)準(zhǔn)的Web協(xié)議進(jìn)行通訊。SOAP使用基于XML的可擴(kuò)展消息格式,需同時(shí)綁定一個(gè)傳輸用協(xié)議。這個(gè)協(xié)議通常是HTTP或HTTPS,但也可以使用SMTP或XMPP。

WSDL是一個(gè)XML格式文檔,用以描述服務(wù)端口訪問(wèn)方式和使用協(xié)議的細(xì)節(jié)。通常用來(lái)輔助生成服務(wù)器和客戶端代碼及配置信息。

UDDI是用來(lái)發(fā)布和搜索WEB服務(wù)的協(xié)議,應(yīng)用程序可藉由此協(xié)議在設(shè)計(jì)或運(yùn)行時(shí)找到目標(biāo)WEB服務(wù)。

Java開(kāi)發(fā)中的Web Service有很多種實(shí)現(xiàn)方式,如XML-RPC、XFile、Axis等等,可是這些庫(kù)并不適合資源有限的Android手機(jī)客戶端。在Java ME版本中,廣泛使用的是KSOAP。雖然Android并不使用Java ME,但是KSOAP也有Android下的可用版本ksoap2-Android。

2.1 ksoap2-Android

kSOAP是Enhydra.org的一個(gè)開(kāi)源作品,是EnhydraME項(xiàng)目的一部分。ksoap2-Android是ksoap2在Android下的一個(gè)移植版本,利用它可以非常方便地訪問(wèn)Web Service。ksoap2的常用接口有:

org.ksoap2. SoapObject

org.ksoap2. SoapEnvelope

org.ksoap2. SoapSerializationEnvelope

org.ksoap2.transport. HttpTransport

SoapObject用于創(chuàng)建SOAP對(duì)象,實(shí)現(xiàn)SOAP調(diào)用;

SoapEnvelope實(shí)現(xiàn)了SOAP標(biāo)準(zhǔn)中的SOAP Envelope,封裝了head對(duì)象和body對(duì)象。

SoapSerializationEnvelope是ksoap2中對(duì)SoapEnvelope的擴(kuò)展,支持SOAP序列化(Serialization)格式規(guī)范,可以對(duì)簡(jiǎn)單對(duì)象自動(dòng)進(jìn)行序列化(Simple object serialization)。

HttpTransport用于進(jìn)行Internet訪問(wèn)/請(qǐng)求,獲取服務(wù)器SOAP。

2.2 ksoap2-Android的編譯配置

圖1

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content" android:text="@string/phonenumber" /><EditText

android:id="@+id/EditTextPhoneNumber" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" >

<requestFocus /></EditText><Button

android:id="@+id/btnCheck"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btnCheck" />

3.2查詢的代碼

當(dāng)輸入手機(jī)號(hào)碼,點(diǎn)擊查詢按鈕時(shí),訪問(wèn)Web Service,遠(yuǎn)程調(diào)用getMobileCodeInfo方法來(lái)獲得查詢結(jié)果。訪問(wèn)Web Service的步驟如下:

1)實(shí)例化SoapObject對(duì)象,指定webService的命名空間和調(diào)用的方法名稱。

String serviceNameSpace = "http://WebXml.com.cn/";

String methodName = "getMobileCodeInfo";

SoapObject request = new SoapObject(serviceNameSpace,methodName);

2)設(shè)置調(diào)用方法的參數(shù)。根據(jù)服務(wù)提供方描述的參數(shù)要求,需要兩個(gè)參數(shù)。第一個(gè)為mobileCode,字符串類型,表示手機(jī)號(hào)碼,第二個(gè)為userID為商業(yè)用戶ID,免費(fèi)用戶為空字符串。

request.addProperty("mobileCode", strPhoneNumber);

request.addProperty("userID", "");

3)通過(guò)實(shí)例化Envelope對(duì)象,設(shè)置SOAP請(qǐng)求信息,并注冊(cè)Envelope對(duì)象。對(duì)應(yīng)于不同的SOAP規(guī)范,需要使用不同的常量作為參數(shù)。常量SoapEnvelope.VER10:對(duì)應(yīng)于SOAP 1.0規(guī)范;常量SoapEnvelope.VER11:對(duì)應(yīng)于SOAP 1.1規(guī)范;常量SoapEnvelope. VER12:對(duì)應(yīng)于SOAP 1.2規(guī)范。

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = request;

(new MarshalBase64()).register(envelope);

4)實(shí)例化傳輸對(duì)象,參數(shù)為傳遞SOAP數(shù)據(jù)的目標(biāo)地址,即WSDL文檔的URL。HttpTransportSE是一個(gè)強(qiáng)大的Http傳輸類,可以完成Http傳輸過(guò)程。它封裝了網(wǎng)絡(luò)請(qǐng)求的一切,可以完全不用考慮序列化消息。通過(guò)把它的debug屬性設(shè)置為true來(lái)啟用調(diào)試信息。

String serviceURL = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";

HttpTransportSE transport = new HttpTransportSE(serviceURL);

transport.debug = true;

5)獲取返回結(jié)果,并進(jìn)行解析。

返回?cái)?shù)據(jù)為字符串(手機(jī)號(hào)碼:省份城市手機(jī)卡類型)。

if(envelope.getResponse()!=null){

return (envelope.bodyIn.toString());

}

在Android開(kāi)發(fā)中使用ksoap2-Android可以很方便地實(shí)現(xiàn)Web Service功能,通過(guò)Web Service遠(yuǎn)程調(diào)用來(lái)獲取數(shù)據(jù)。但是在開(kāi)發(fā)中發(fā)現(xiàn),直接訪問(wèn)Web Service來(lái)獲取數(shù)據(jù),會(huì)由于網(wǎng)絡(luò)的延時(shí)而造成界面響應(yīng)的短暫停頓,應(yīng)該研究更好的方法,如通過(guò)后臺(tái)異步數(shù)據(jù)傳輸來(lái)解決。

建瓯市| 景洪市| 安康市| 永寿县| 南乐县| 同德县| 胶州市| 凤山市| 北安市| 湖南省| 昆明市| 尉犁县| 安化县| 永胜县| 同心县| 岗巴县| 麻栗坡县| 馆陶县| 宿州市| 呼玛县| 通道| 富民县| 团风县| 凌海市| 曲水县| 屯昌县| 曲阜市| 黑河市| 祥云县| 汉川市| 澳门| 西峡县| 定南县| 民丰县| 太仓市| 辉县市| 巴塘县| 永昌县| 富民县| 临清市| 昆山市|