999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

安卓客戶端與WEB服務器數據傳輸方案的實現

2016-06-27 02:08:14
湖北工程學院學報 2016年3期

李 冉

(荊楚理工學院 計算機工程學院, 湖北 荊門 448000)

安卓客戶端與WEB服務器數據傳輸方案的實現

李冉

(荊楚理工學院 計算機工程學院, 湖北 荊門 448000)

摘要:安卓客戶端與Web服務器之間的數據傳輸,是安卓應用開發的關鍵技術之一,也是安卓應用性能的瓶頸。筆者深入研究了各種數據傳輸方式和現有工具,設計了一套通用的傳輸方案,對方案中通用的構件進行了封裝。經過實際的開發應用顯示,該方案可復制性好,開發效率高,具有實用價值。

關鍵詞:數據傳輸;Android; App;HttpURLConnection

近年來,隨著4G時代的開啟以及智能移動終端設備的平民化,移動互聯網的發展日新月異。基于互聯網的各類應用也不斷地向移動互聯網延伸,APP的下載與安裝成為每一部智能手機必備的功能。絕大部分APP不是一個孤立的移動互聯網應用,都由服務器提供數據服務、計算服務或資源服務,而服務器采用Web服務器居多,它具有開發簡單、易于維護的優點。因此,APP與服務器的數據通信是移動互聯網應用的關鍵技術之一。

Android是一種基于Linux、開源的操作系統,主要使用于移動設備,由Google和開放手機聯盟領導開發[1]。由于Android的開源特性,市場份額飛速增長,據IDC數據顯示,截至2014年,Android用戶達到81.5%,遙遙領先于IOS和WP。

本文主要研究基于Android的APP與WEB服務器之間的數據通信技術,設計并實現一個通用的數據傳輸方案,可應用于大部分移動互聯網應用的開發實踐,以屏蔽數據傳輸技術細節,提高開發效率。

1安卓客戶端與Web服務器數據傳輸技術

安卓客戶端與Web服務器數據傳輸主要有兩種類型:一種基于Socket,另一種基于HTTP。Socket可以實現客戶端與服務器的通信,但是偏底層,難度大,數據的讀寫較麻煩,一般不直接使用。HTTP 協議是現在互聯網上使用最多、最重要的協議,很多應用程序直接通過 HTTP 協議獲取網絡資源和數據通信。基于Http的安卓客戶端與Web服務器數據傳輸組件主要有兩個,即HttpClient與HttpURLConnection。

1.1HttpClient

HttpClient是 Apache Jakarta Common旗下的一個開源項目,它是一個基于HTTP協議的客戶端編程工具庫,提供功能豐富的支持 HTTP 的工具類,并且版本在不斷更新[2]。

1.2HttpURLConnection

HttpURLConnection是一種輕量級的HTTP客戶端工具類,可適用于大多數的應用程序[3]。雖然它的API比較簡單,但是人們可以更容易地使用和擴展它。

1.3兩者比較

HttpURLConnection是安卓平臺的標準實現,支持系統級連接池,打開的連接在一段時間內所有程序可共用,直接在系統層實現緩存策略處理,加快了重復請求的速度。而HttpClient是一個增強版的HttpURLConnection,HttpURLConnection可以做的事情它全部可以做;但由于HttpClient的API體系較大,很難在滿足向上兼容的情況下進行升級和擴展。因此,目前安卓團隊對提升和優化HttpClient組件的工作態度并不積極。

2通用的數據傳輸方案

根據對HttpClient和HttpURLConnection的分析研究,本文采用HttpURLConnection組件設計一套通用的數據傳輸方案,并將方案中共性的功能模塊封裝成通用的工具,實現安卓客戶端與Web服務器之間傳輸各類數據的功能。傳輸方案的總體框架如圖1所示。

圖1 通用傳輸方案框架圖

對于通用傳輸方案框架的說明如下:

(1)該方案框架中,客戶端與服務器之間所有的數據交換都是以對象流的形式實現。

(2)通用連接器屬于固定的功能模塊,由HttpURLConnection封裝實現。

(3)Web服務器只開通一個數據服務接口,這樣客戶端便于維護服務器的地址。

(4)所有的命令字構成命令字集合,相當于數據請求協議,用于各類請求的區分。

(5)對于Android客戶端的某一數據請求,首先調用通用連接器實例,通過sendRequest()方法向服務器唯一的數據接口發送http請求。請求中所有的參數(包括命令字),通過對象輸出流一起提交。服務器端數據服務接口收到請求后,調用請求分發器進行業務分發,最后將數據結果通過對象輸出流返回到客戶端。

3功能模塊的封裝

3.1通用連接器的封裝

客戶端通用連接器類Connector由HttpURLConnection組件進一步封裝來實現。為了實現連接器中請求發送方法的通用性,所有的參數(包括命令字),都以對象流的方式向服務器提交。連接器中的異常一律拋出,客戶端在表示層中才進行捕獲,便于頁面的跳轉控制。主要代碼如下:

public class Connector {

private static String urlPath; //web服務器數據請求地址

private HttpURLConnection conn;

public Connector() throws IOException{

urlPath = “…”;

initConnection(); }

//數據請求發送方法,返回結果數據對象輸入流

public ObjectInputStream sendRequest(String cmdKey,Object[] data) throws Exception{

OutputStream os = conn.getOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(os);

oos.writeObject(new String(cmdKey));

for(int i=0; data!=null && i

建立科學合理的審計質量評價機制,首先要從制度上給予質量評價相應的依據。目前我國在這一方面才剛剛起步,許多事物尚且停留在總括式概念的程度。因此金融監管部門應當在基于本國國情的基礎上借鑒外來經驗,建立起一套適應我國國情的審計質量評價機制。加強質量評價隊伍建設,培養高素質的審計質量評價專業人士,提高質量評價隊伍的準入門檻,堅持擇優錄取的同時也要合理配置人才資源,做到人盡其才。

oos.writeObject(data[i]); }

oos.flush(); oos.close();

InputStream is= conn.getInputStream();

ObjectInputStream ois = new ObjectInputStream(is);

return ois;

}

private void initConnection() throws IOException{

URL url = new URL(urlPath);

conn.setDoOutput(true); conn.setDoInput(true);

conn.setRequestProperty(“Content-type”, “application/x-java-serialized-object”);

conn.setRequestMethod(“POST”); //使用post請求方法

}

}

3.2服務器數據接口的封裝

在Web服務器中采用Servlet來實現請求監聽,整個服務器只創建一個數據接口Servlet,封裝為EntranceServlet類[4-5]。在doPost方法中,通過request和response對象分別獲取對象輸入流ois和對象輸出流oos,然后調用請求分發器進行請求分發[6-7]。主要代碼如下:

public class EntranceServlet extends HttpServlet {

……

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws Exception {

try {

ObjectInputStream ois=new ObjectInputStream(req.getInputStream());

ObjectOutputStream oos=new ObjectOutputStream(resp.getOutputStream());

SyncDispatcher.dispatch(ois, oos); //請求分發器進行請求分發

} catch (Exception e) {

…… }

}

}

3.3服務器請求分發器的封裝

在服務器中,請求分發器是一個相對固定的工具類,類中dispatch()方法的實現一般根據具體的業務進行擴展[8]。本方案中所有命令字在CommandKey類中,以常量的形式存儲。主要代碼如下:

public class SyncDispatcher {

public static void dispatch(ObjectInputStream ois,ObjectOutputStream oos){

String cmdKey= (String)(ois.readObject()); //輸入流的第一個對象即為命令字

if(CommandKey.NET_TEST.equals(cmdKey)){ //如果是測試命令字

test(ois,oos);

}else if(CommandKey.KEY2.equals(cmdKey)){

… //調用服務器中相應的服務業務類實現數據請求服務

}else if( … ) …

ois.close();oos.flush();oos.close();

}

}

4實際應用案例

本文以荊楚校園通新聞列表的獲取為例,簡略展示該方案的實際應用。荊楚校園通是一個由APP客戶端和后臺管理端構成的信息服務系統,客戶端采用Android的原生API進行開發。在APP中,所有與后臺管理端的數據通信均采用本文所設計的傳輸方案,可以方便地傳輸文字、圖片、文件等各類數據,系統開發效率高,總體運行速度快,性能穩定。

荊楚校園通新聞列表動態地從后臺獲取,包括新聞標題、簡介、封面圖片等屬性,獲取的流程如圖2所示。

圖2 數據獲取流程

圖2中,NewsGetter是客戶端負責獲取新聞列表的一個封裝類。在這個類中,另外創建一個線程,使用通用連接器Connector連接服務器數據接口,調用連接器中的sendRequest方法,將新聞獲取中需要的參數和CommandKey中對應的命令字“news_list”一起發出去。后臺服務端數據接口相應類EntranceServlet收到請求后,首先讀取命令字,然后調用SyncDispatcher,參照CommandKey中命令字列表,將請求轉發到新聞列表查詢器NewsQueryer,由它讀取其他參數實現對應的新聞查詢,查詢結果對象通過對象輸出流返回到客戶端NewsGetter對象中另起的線程中。

從服務器中返回的數據對象為ArrayList的新聞列表,通過Handler傳遞到新聞列表UI主線程,組裝成SimpleAdapter類型的適配器,進行頁面中ListView組件的渲染,執行效果見圖3。

圖3 新聞列表效果圖

5總結

本文設計的安卓客戶端與WEB服務器數據傳輸方案,旨在模型化客戶端與WEB服務器之間的數據傳遞,以降低開發成本,屏蔽技術細節,提高開發效率。經過實際應用,表明該方案是可行的,理論也是可靠的。當然,對于該方案,還需要在更多的實際應用中進行驗證和壓力測試,才能定論它的實際應用價值。

[參考文獻]

[1]馬越.Android的架構與應用[D].北京:中國地質大學(北京),2008.

[2]劉永玲.校園信息即時推送平臺關鍵技術的研究與實現[D].長沙:中南大學,2014.

[3]徐婉珍.HttpClient組件及其在Android開發中的應用探討[J].數字技術與應用,2013,1(1):38-41.

[4]池亞平,方勇.Servlet技術與應用方法[J].北京郵電大學學報,2003,26(z1):137-139.

[5]馮鋼.Java對象流在網絡編程中的運用[J].電腦知識與技術,2014(23):5445-5448.

[6]昊斯特曼(美).Java核心技術(卷I)[M].北京:機械工業出版社,2008.

[7]李家科. Android的分析與開發[D]. 蘭州:蘭州交通大學,2014:24-26.

[8]曹海英,元元. 基于Android系統的移動校園信息平臺設計[J].赤峰學院學報(自然科學版), 2014(21):11-12.

(責任編輯:張凱兵)

Data Transmission Scheme Between Android Client and Web Server

Li Ran

(CollegeofComputerEngineering,JingchuUniversityofTechnology,Jingmen,Hubei448000,China)

Abstract:The data transmission between Android client and WEB server, is one of the key technologies of Android application development and also the bottleneck of Android application performance. This paper studies a variety of data transmission and the existing tools, designs a general transmission scheme, and the encapsulation of the general component in the scheme. Through the development of practical application, it shows that the scheme could be easily copied, of high development efficiency as well as practical value.

Key Words:data transmission;Android; App;HttpURLConnection

收稿日期:2016-03-19

基金項目:荊楚理工學院校級科研項目(ZR201510)

作者簡介:李冉(1979-),男,河南潢川人,荊楚理工學院計算機工程學院講師,碩士。

中圖分類號:TP311

文獻標志碼:A

文章編號:2095-4824(2016)03-0034-04

主站蜘蛛池模板: 无码丝袜人妻| 久久久久88色偷偷| 少妇精品久久久一区二区三区| 色婷婷电影网| 免费va国产在线观看| 亚洲 日韩 激情 无码 中出| a色毛片免费视频| 成人另类稀缺在线观看| 国产精品私拍99pans大尺度| 无码精品国产dvd在线观看9久 | 日韩资源站| a毛片在线| 中文字幕在线视频免费| 青草视频在线观看国产| 亚洲欧美日韩成人在线| 精品伊人久久大香线蕉网站| 久久婷婷人人澡人人爱91| 91九色国产在线| 亚洲人人视频| 欧美性天天| 色成人综合| 欧美国产视频| 日韩精品中文字幕一区三区| 2021国产在线视频| 免费人成在线观看成人片| 国产日韩精品一区在线不卡| JIZZ亚洲国产| 波多野结衣一区二区三区四区| 少妇高潮惨叫久久久久久| 激情无码视频在线看| 免费va国产在线观看| 亚洲国产清纯| 97久久超碰极品视觉盛宴| 国产清纯在线一区二区WWW| 国产久草视频| 国产欧美视频综合二区| a天堂视频| 欧美一级片在线| 欧美专区在线观看| 久久这里只有精品8| 欧美日韩久久综合| 亚洲码一区二区三区| 成年女人a毛片免费视频| 国产91在线|日本| 亚洲精品视频免费看| 免费人成又黄又爽的视频网站| 国产在线观看第二页| 国产丝袜啪啪| 日韩精品视频久久| 99久久无色码中文字幕| 91毛片网| 亚洲第一黄色网址| 色噜噜久久| 试看120秒男女啪啪免费| 欧美啪啪视频免码| 成人精品在线观看| 国产美女主播一级成人毛片| 一区二区在线视频免费观看| 伊人大杳蕉中文无码| 久久一本日韩精品中文字幕屁孩| 天天综合网色| 日韩av无码精品专区| 免费看久久精品99| 日韩欧美国产精品| 亚洲综合一区国产精品| 成人午夜视频在线| 日韩av手机在线| 欧美97色| 成人午夜视频在线| 欧美色视频网站| 久久久久九九精品影院| 成人午夜亚洲影视在线观看| 成人在线观看一区| 亚洲精品国产精品乱码不卞| 精品三级网站| 国产a网站| 亚洲人成人无码www| 国产偷国产偷在线高清| 国产亚洲视频免费播放| 欧美激情一区二区三区成人| 国产偷国产偷在线高清| 丝袜亚洲综合|