摘要:介紹了Google Android架構(gòu)和如何進(jìn)行Web交互,探討在Android平臺(tái)上的企業(yè)應(yīng)用如何通過webservice訪問企業(yè)內(nèi)網(wǎng)信息及保護(hù)內(nèi)網(wǎng)信息的安全性。
關(guān)鍵詞:Android;webservice;java;內(nèi)網(wǎng)
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 18-0000-02
1 Android平臺(tái)
Android是2007年google公司發(fā)布的一個(gè)操作系統(tǒng),其基于Linux系統(tǒng)并且源碼開放;便于后來者自行修改底層及開發(fā)各類插件,大量應(yīng)用于移動(dòng)設(shè)備如手機(jī)和平板電腦等。中文名大部分都稱其為“安卓”系統(tǒng)。Android的主要競爭對手是蘋果的ios系統(tǒng)。目前Android在全球的市場占有率位居第一。目前已占據(jù)全球手機(jī)操作系統(tǒng)大約60%的份額,其中以2.3版本的android系統(tǒng)占有率最高。
隨著移動(dòng)終端計(jì)算能力與存儲(chǔ)能力的日益增強(qiáng)以及移動(dòng)通信技術(shù)與互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,基于移動(dòng)終端的應(yīng)用所占的比重越來越大,尤其是當(dāng)Android開發(fā)平臺(tái)出現(xiàn)后,基于移動(dòng)終端的開發(fā)門檻出現(xiàn)了劃時(shí)代意義上的降低。
作為一個(gè)源碼開放的手機(jī)平臺(tái),它的開放性使其不受軟件專有權(quán)的限制。目前3g網(wǎng)絡(luò)大量普及,各版本android系統(tǒng)的手機(jī)也大量面市。另一方面,webservice也是目前互聯(lián)網(wǎng)應(yīng)用技術(shù)的一個(gè)非常普及和便捷的手段。手機(jī)平臺(tái)和web service技術(shù)的結(jié)合,是目前主流解決傳統(tǒng)平臺(tái)到移動(dòng)終端遷移的有效手段。因此本文討論和實(shí)現(xiàn)android平臺(tái)通過調(diào)用遠(yuǎn)程web service實(shí)現(xiàn)數(shù)據(jù)訪問以及將該技術(shù)應(yīng)用到企業(yè)應(yīng)用的開發(fā)中。
2 架構(gòu)
手機(jī)端應(yīng)用android系統(tǒng)作為底層平臺(tái),通過調(diào)用服務(wù)器端發(fā)布的web service服務(wù)訪問服務(wù)器數(shù)據(jù)并展現(xiàn)于手機(jī)端。
2.1 Android應(yīng)用程序組件
Android系統(tǒng)的基本組件包括Activity(活動(dòng))、Service(服務(wù))、Broadcast Receiver(廣播接收者)和Content Provider(內(nèi)容提供者)等,此外還包括專門負(fù)責(zé)在基本組件之間傳遞消息的Intent(意向)組件。
2.2 Web Services
Web Service是一種兩個(gè)電子設(shè)備通過互聯(lián)網(wǎng)實(shí)現(xiàn)相互訪問的方法,W3C定義Web Services是基于網(wǎng)絡(luò)的實(shí)現(xiàn)機(jī)器到機(jī)器互訪的軟件系統(tǒng)。Web Services可以將本地應(yīng)用服務(wù)轉(zhuǎn)換為網(wǎng)絡(luò)應(yīng)用服務(wù),他使用XML來編解碼數(shù)據(jù),并使用SOAP來傳輸數(shù)據(jù);同時(shí)不受設(shè)備和底層系統(tǒng)的限制,實(shí)現(xiàn)與平臺(tái)和編程語言無關(guān)的方式相互通信。
3 設(shè)計(jì)思路
目前一些企業(yè)因?yàn)榘踩矫娴目紤],將企業(yè)內(nèi)部的發(fā)布和辦公系統(tǒng)建立在內(nèi)網(wǎng),使得出差或者異地辦公員工訪問內(nèi)網(wǎng)系統(tǒng)十分不便;同時(shí)考慮到移動(dòng)終端設(shè)備的大量普及,可以用移動(dòng)終端通過webservice訪問企業(yè)的內(nèi)部數(shù)據(jù),而該方法只需要開發(fā)企業(yè)應(yīng)用服務(wù)器的webservice端口到外網(wǎng)就可以,能大大保證內(nèi)網(wǎng)數(shù)據(jù)的安全,同時(shí)兼顧員工在公司外的訪問需求。
4 功能模塊
功能簡單劃分為:登錄、內(nèi)網(wǎng)新聞、公司通告、請假申請和工資查詢
這幾個(gè)功能為平時(shí)常用的而且不在公司時(shí)經(jīng)常需要訪問和申請的項(xiàng)目;每個(gè)功能模塊對應(yīng)服務(wù)器web service端的一個(gè)方法和相應(yīng)參數(shù);手機(jī)端后服務(wù)器端通過得到的參數(shù)處理返回需要的內(nèi)容;
例如:新聞或公告返回標(biāo)題列表和id;手機(jī)端在Android的view List組件中呈現(xiàn)內(nèi)容;點(diǎn)擊每個(gè)標(biāo)題后web service通過d返回新聞或公告的詳細(xì)內(nèi)容給手機(jī);手機(jī)端通過text view組件即可展現(xiàn)新聞或公告的詳細(xì)內(nèi)容了。
工資查詢返回最近幾個(gè)月的工資列表,點(diǎn)擊后可以進(jìn)入查詢每月工資的明細(xì)。請假申請則是從手機(jī)端選擇要請假的日期和請假類型后,提交給指定審批人;將這些信息通過webservice傳給內(nèi)網(wǎng)辦公系統(tǒng),之后服務(wù)器端生成請假審批信息;實(shí)現(xiàn)移動(dòng)客戶端的辦公業(yè)務(wù)。
5 設(shè)計(jì)步驟
在Android SDK中并沒有提供調(diào)用WebService的庫,因此,需要使用第三方的SDK來調(diào)用WebService。PC版本的WebService庫非常豐富,但這些對Android來說過于龐大。適合手機(jī)的WebService客戶端的SDK有一些,比較常用的是KSOAP2。
利用ksoap2-android在Android平臺(tái)上調(diào)用Web Services的步驟如下:
(1)設(shè)定Web Services的命名空間和調(diào)用的方法名稱,關(guān)鍵的代碼如下:
import org.ksoap2.serialization.SoapObject;
private static final String NAMESPACE = \"http://WebXml.com.cn/\";
private static final String METHOD_NAME = \"getWeatherbyCityName\";
SoapObject request = new SoapObject(NameSpace, MethodName);
SoapObject類的第一個(gè)參數(shù)表示W(wǎng)ebService的命名空間,可以從WSDL文檔中找到WebService的命名空間。
(2)設(shè)定方法的參數(shù)值:
request.addProperty(\"param\",\"value\");
比如我們需要調(diào)用企業(yè)內(nèi)網(wǎng)新聞、企業(yè)內(nèi)網(wǎng)公告和員工工資信息等等
第一步我們需要輸入員工的內(nèi)網(wǎng)用戶名和密碼完成登錄,則需要傳遞用戶名和密碼給服務(wù)器端的webservice
request.addProperty(\"username\", username);
request.addProperty(\"password\", password);
(3)生成調(diào)用WebService方法的SOAP請求信息,并指定SOAP的版本:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
(4)使用getResponse方法獲得WebService方法的返回結(jié)果
H SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
已登錄為例,服務(wù)器端webservice通過傳遞到的用戶名和密碼參數(shù)到服務(wù)器數(shù)據(jù)庫驗(yàn)證是否為合法用戶,返回ture或1,手機(jī)端收到返回結(jié)果判斷是否允許登錄。當(dāng)然,在傳遞密碼時(shí)一般的做法是通過MD5加密傳遞。
6 結(jié)束語
該方案很好地利用了Android平臺(tái)的優(yōu)勢,比起基于WAP瀏覽器、基于J2ME、以及蘋果公司的iphone開發(fā)平臺(tái)來說,開發(fā)的難度是最低的,并且因?yàn)锳ndroid平臺(tái)的完全開源,開發(fā)的成本要低很多,比企鵝滿足移動(dòng)辦公和瀏覽的同時(shí)保證了內(nèi)網(wǎng)服務(wù)器的安全。
參考文獻(xiàn):
[1]Android SDK Document[EB/OL].
[2]http://developer.android.com/guide/index.html.