• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的校園網(wǎng)站客戶端的設(shè)計(jì)與實(shí)現(xiàn)

      2015-06-24 12:02:17梁轟王江平徐家喜
      電腦知識(shí)與技術(shù) 2015年11期
      關(guān)鍵詞:校園卡開(kāi)放平臺(tái)文檔

      梁轟++王江平++徐家喜

      摘要:在沒(méi)有提供校園網(wǎng)站服務(wù)器的開(kāi)放平臺(tái)環(huán)境下,設(shè)計(jì)實(shí)現(xiàn)了一款基于Android的校園網(wǎng)站客戶端,該客戶端可以查詢校園的即時(shí)信息和非即時(shí)信息,以及校園卡圈存。該系統(tǒng)采用HttpClient技術(shù)實(shí)現(xiàn)信息門戶的登錄和訪問(wèn),并利用多線程和jsoup技術(shù)對(duì)信息門戶中師生關(guān)注的信息進(jìn)行抓取和有效地提取,使用SQLite輕型數(shù)據(jù)庫(kù)對(duì)提取的數(shù)據(jù)進(jìn)行存儲(chǔ),并結(jié)合ORMLite持久化框架來(lái)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行高效地增刪改查操作。

      關(guān)鍵詞:Android;校園網(wǎng)站客戶端;HttpClient;jsoup;ORMLite持久化框架+

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0044-03

      The Design and Implementation of Campus Networks Client Based on Android

      LIANG Hong, WANG Jiang-ping, XU Jia-xi

      ( School of Information Engineering,Nanjing Xiaozhuang University,Nanjing 211171,China)

      Abstract: Without the servers open platform of the campus network, a client of campus network based on Android was designed and realized. Instant message and non-instant message could be read and money could be transferred from the bank card to the campus card on the client.The system used HttpClient to login and surf the portal system, used multithreading and jsoup to capture and extract valid data from the portal system, used SQLite database to store data and used ORMLite framework to perform CRUD operations.

      Key words:Android; client of campus network; HttpClient; jsoup; ORMLite persistence framework

      1 引言

      在國(guó)內(nèi),智能手機(jī)用戶和互聯(lián)網(wǎng)用戶數(shù)增長(zhǎng)顯著。據(jù)《2013-2014年中國(guó)移動(dòng)互聯(lián)網(wǎng)調(diào)查研究報(bào)告》,截至2014年6月,我國(guó)手機(jī)網(wǎng)民規(guī)模為5.27億,在整體網(wǎng)民中占比達(dá)83.4%[1],并且在2014年,大學(xué)生市場(chǎng)中智能手機(jī)普及率高達(dá)98%[2]。在智能終端的使用越來(lái)越廣泛的趨勢(shì)下,大學(xué)生也越來(lái)越傾向于使用智能終端設(shè)備來(lái)瀏覽網(wǎng)絡(luò)信息。但是目前大部分的校園網(wǎng)站是針對(duì)PC瀏覽器設(shè)計(jì)開(kāi)發(fā)的,導(dǎo)致信息在智能終端設(shè)備屏幕上顯示比較凌亂且冗長(zhǎng),查找信息不方便,甚至有的出現(xiàn)無(wú)法訪問(wèn)的情況,因此設(shè)計(jì)實(shí)現(xiàn)一款基于Android顯示簡(jiǎn)潔的校園網(wǎng)站客戶端是極具實(shí)用意義的。

      在基于Android的校園網(wǎng)站客戶端中,用戶能夠高效便捷地獲取校園網(wǎng)站的即時(shí)信息與非即時(shí)信息。一些如報(bào)名和考試等重要的即時(shí)信息能夠被推送到該校園網(wǎng)站客戶端上,使校園通知公告的及時(shí)性得到提高。同時(shí)用戶還可以快速地查詢?nèi)纾赫n表、成績(jī)、借閱書(shū)籍等個(gè)人的非即時(shí)信息。

      Android校園網(wǎng)站客戶端獲取上述即時(shí)消息和非即時(shí)消息的數(shù)據(jù)有兩種方案,一種是擁有校園網(wǎng)站的的賬號(hào)和密碼以合法用戶身份進(jìn)行訪問(wèn)。另一種是學(xué)校直接提供校園網(wǎng)站服務(wù)器端的開(kāi)放平臺(tái),開(kāi)發(fā)時(shí)直接調(diào)用該平臺(tái)的數(shù)據(jù)接口獲得數(shù)據(jù)。開(kāi)放平臺(tái)是一個(gè)web服務(wù),負(fù)責(zé)接收客戶端提交的參數(shù),并根據(jù)參數(shù)執(zhí)行相應(yīng)的業(yè)務(wù)邏輯[3],最終將請(qǐng)求的數(shù)據(jù)返回給客戶端。但此類系統(tǒng)一般不提供開(kāi)放平臺(tái)的接口,因此,基于Android的校園網(wǎng)站客戶端將以某學(xué)院的校園網(wǎng)站為例,采用第一種方案來(lái)獲取校園網(wǎng)站數(shù)據(jù),實(shí)現(xiàn)校園網(wǎng)站客戶端。

      2 模塊設(shè)計(jì)

      由于設(shè)計(jì)的客戶端應(yīng)用程序的用戶主要是在校大學(xué)生,他們比較關(guān)注自己的學(xué)習(xí)成績(jī),學(xué)分,一卡通使用情況和圖書(shū)借閱情況等,因此Android校園網(wǎng)站客戶端將這些功能集成在以下四大模塊中:用戶功能模塊、教務(wù)模塊、一卡通模塊和設(shè)置模塊。

      為了保證合法用戶能安全的使用Android校園網(wǎng)站客戶端,用戶功能模塊中有登錄和注銷的功能。

      個(gè)人數(shù)據(jù)模塊中有個(gè)人信息、選課信息、成績(jī)信息、考試信息、借閱信息和讀者信息的功能,用戶通過(guò)該模塊的功能可以查詢個(gè)人的教務(wù)和圖書(shū)信息。

      一卡通模塊主要包括校園卡余額信息、校園卡基本信息、銀行卡余額信息、校園卡消費(fèi)信息、校園卡圈存和密碼修改功能,用戶通過(guò)該模塊的功能能夠方便地在智能終端上進(jìn)行校園卡的常規(guī)操作。

      設(shè)置模塊中有退出登錄、清除數(shù)據(jù)、版本說(shuō)明和免責(zé)聲明的功能,該模塊主要提供給用戶刪除本地用戶數(shù)據(jù)的功能。

      校園網(wǎng)站客戶端的功能圖如圖1所示。

      圖1 校園網(wǎng)站客戶端功能圖

      3 相關(guān)技術(shù)

      為了實(shí)現(xiàn)校園網(wǎng)站客戶端上述的所有功能,所需要使用的核心技術(shù)有HttpClient、jsoup和ORMLite。

      3.1 HttpClient

      HttpClient實(shí)現(xiàn)了所有 HTTP 的方法,如常見(jiàn)的 GET、POST、PUT、HEAD 等[4]。在Android校園網(wǎng)站客戶端中,主要使用GET方法獲取驗(yàn)證碼,使用POST方法獲取信息門戶的Session信息,Session是允許客戶端和服務(wù)器端通過(guò)使用 HTTP 的請(qǐng)求與響應(yīng)頭中的數(shù)據(jù)來(lái)交換狀態(tài)信息的技術(shù)[5],以便登錄信息門戶。從HttpClient對(duì)象中可以獲取訪問(wèn)目標(biāo)地址的文檔對(duì)象的二進(jìn)制數(shù)據(jù)流,最終從該文檔流中提取出校園網(wǎng)站的即時(shí)信息和非即時(shí)信息,存入本地的SQLite數(shù)據(jù)庫(kù)中。在Android校園網(wǎng)站客戶端中,主要使用HttpClient技術(shù)獲取校園網(wǎng)站各個(gè)信息頁(yè)面的源碼,為jsoup解析頁(yè)面提取上述即時(shí)與非即時(shí)數(shù)據(jù)奠定基礎(chǔ)。

      3.2 jsoup

      jsoup是一款Java的HTML解析器,它提供了一套便利的API,能夠通過(guò)文檔對(duì)象模型、層疊樣式表和類似于jQuery的操作方法來(lái)抓取和操作數(shù)據(jù)[6]。jsoup獲取數(shù)據(jù)有兩大方法:第一種是通過(guò)分析文檔對(duì)象模型的網(wǎng)頁(yè)標(biāo)簽和元素獲取數(shù)據(jù);第二種方法類似jQuery方式,使用jsoup包下的select元素選擇器。

      在Android校園網(wǎng)站客戶端中,主要利用jsoup提供的選擇器來(lái)篩選出文檔對(duì)象中的有效數(shù)據(jù),如選課結(jié)果表單中的課程名、上課時(shí)間、地點(diǎn)、周期等數(shù)據(jù)。

      3.3 ORMLite

      ORM (Object/Relation Mapping)即對(duì)象關(guān)系映射,是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。Android校園網(wǎng)站客戶端中主要利用ORMLite的對(duì)象關(guān)系映射,在面向?qū)ο驤ava和關(guān)系型數(shù)據(jù)庫(kù)SQLite之間數(shù)據(jù)轉(zhuǎn)換時(shí),避免設(shè)計(jì)繁瑣的SQL語(yǔ)句,提高開(kāi)發(fā)效率。

      4 Android校園網(wǎng)站客戶端實(shí)現(xiàn)

      依據(jù)功能圖設(shè)計(jì)的移動(dòng)客戶端的部分界面如圖2所示,在首頁(yè)界面中,主要提供了個(gè)人信息、選課信息、成績(jī)信息、考試信息、借閱信息和讀者信息的有效數(shù)據(jù),在一卡通界面中,主要提供了校園卡余額信息、校園卡基本信息、銀行卡余額信息、校園卡消費(fèi)信息。

      圖2 移動(dòng)客戶端的部分界面圖

      Android校園網(wǎng)站客戶端的核心技術(shù)是如何獲取校園網(wǎng)站的有效數(shù)據(jù),而數(shù)據(jù)獲取主要包括獲取HTML文檔數(shù)據(jù),提取有效數(shù)據(jù)和存取數(shù)據(jù),流程圖如圖3所示。

      圖3 校園網(wǎng)站客戶端獲取數(shù)據(jù)流程圖

      4.1 獲取HTML文檔數(shù)據(jù)

      HTML文檔數(shù)據(jù)需要使用HttpClient對(duì)象來(lái)獲取,獲取流程如圖4所示。

      圖4 HttpClient獲取HTML文檔數(shù)據(jù)流程圖

      以登錄門戶系統(tǒng)為例,通過(guò)HttpClient獲取HTML文檔數(shù)據(jù)的核心代碼如下:

      HttpPost httpPost = new HttpPost(“request_url”);

      httpPost.setHeader("Cookie", "JSESSIONID=" + cookie);

      List nvps = new ArrayList();

      nvps.add(new BasicNameValuePair("username", params[0]));

      httpPost.setEntity(new UrlEncodedFormEntity(nvps));

      DefaultHttpClient httpClient = new DefaultHttpClient();

      HttpResponse httpResponse = httpClient.execute(httpPost);

      HttpEntity entity = httpResponse.getEntity();

      String response_string = EntityUtils.toString(entity,"utf-8");

      上述代碼中,HttpPost對(duì)象的主要作用是將Android 手機(jī)端的數(shù)據(jù)(NameValuePair對(duì)象)提交給Web 應(yīng)用服務(wù)器[8]。參數(shù)request_url是登錄驗(yàn)證用戶名和密碼的請(qǐng)求鏈接,參數(shù)cookie是指訪問(wèn)該鏈接所需要的SessionID,params[0]是數(shù)組params中的用戶名,username是鍵值對(duì)的鍵,該鍵必須與校園網(wǎng)站表單中的name值一致,否則客戶端的請(qǐng)求無(wú)法通過(guò)校園網(wǎng)站的驗(yàn)證。DefaultHttpClient是發(fā)送HttpPost請(qǐng)求的類,服務(wù)器端處理完請(qǐng)求后會(huì)向客戶端發(fā)送響應(yīng)結(jié)果,該結(jié)果需使用HttpResponse類接收。EntityUitls的toString方法可以將響應(yīng)結(jié)果轉(zhuǎn)換為字符串,即響應(yīng)結(jié)果的HTML字符串。

      4.2 提取有效數(shù)據(jù)

      jsoup提供了parse(String HTML)的方法,將HTML字符串轉(zhuǎn)換為jsoup可操作的文檔對(duì)象模型。提取數(shù)據(jù)需要使用jsoup提供的select元素選擇器,實(shí)現(xiàn)代碼如下:

      Document doc=jsoup.parse(response_string);

      doc.getElementById("studentNumber").val();

      doc.select("div[tabid=01] table tr.t_con");

      第一種方法:選擇頁(yè)面源碼中id屬性為studentNumber的標(biāo)簽,并通過(guò)val()方法獲得該標(biāo)簽下的值,此處即學(xué)號(hào)。

      第二種方法:復(fù)雜元素選擇器,選擇文檔對(duì)象模型中tabid屬性值為01下的div標(biāo)簽,再選擇該div下的table元素,接著選擇該table下class屬性值為t_con的所有tr元素。

      在校園網(wǎng)站客戶端中,主要運(yùn)用以上兩種方法來(lái)對(duì)校園網(wǎng)站中的個(gè)人信息、選課信息、成績(jī)信息、考試信息、借閱信息和讀者信息等數(shù)據(jù)進(jìn)行抓取,避免了直接訪問(wèn)頁(yè)面而出現(xiàn)的訪問(wèn)不方便或者無(wú)法訪問(wèn)的情況。

      4.3 存取數(shù)據(jù)

      ORMLite提供了許多在SQLite數(shù)據(jù)庫(kù)中便捷地增、刪、改、查數(shù)據(jù)的方法,使用ORMLite需要如下幾步工作:

      1)引入ORMLite的jar包:將jar包復(fù)制到工程的libs目錄下。

      2)構(gòu)建持久化實(shí)體類,主要使用注解@DatabaseTable將如Entity類映射到數(shù)據(jù)庫(kù)中的Entity表,使用注解@DatabaseField將成員屬性映射到Entity表中的字段,不別名字段名則以成員名命名。

      3)創(chuàng)建DatabaseHelper類,該類繼承OrmLiteSqliteOpenHelper,實(shí)質(zhì)是間接繼承了SQLiteOpenHelper類,主要用來(lái)創(chuàng)建數(shù)據(jù)庫(kù)和表等基本數(shù)據(jù)庫(kù)的操作。

      4)創(chuàng)建DAO類并使用ORMLite提供的方法來(lái)存取數(shù)據(jù)。

      校園網(wǎng)站客戶端中,ORMLite技術(shù)主要用作保存于讀取從門戶網(wǎng)站中所提取的數(shù)據(jù),ORMLite提供的增、刪、改和查數(shù)據(jù)的方法擁有便捷和快速的特點(diǎn),在開(kāi)發(fā)過(guò)程中節(jié)省了設(shè)計(jì)繁瑣SQL語(yǔ)句的時(shí)間。

      5 總結(jié)

      基于Android的校園網(wǎng)站客戶端是在沒(méi)有服務(wù)器端的開(kāi)放平臺(tái)下設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng),利用FireFox的FireBug調(diào)試工具和Fillder抓包工具[9]對(duì)校園網(wǎng)站進(jìn)行抓包,分析其請(qǐng)求頭部與響應(yīng)結(jié)果,再利用jsoup來(lái)抓取頁(yè)面中的有效數(shù)據(jù),并通過(guò)ORMLite對(duì)數(shù)據(jù)進(jìn)行存取。在消息推送方面則采用百度云推送平臺(tái)。該系統(tǒng)能夠使校園網(wǎng)站的信息在移動(dòng)智能終端得以更加方便、快捷的查詢,解決了在智能終端上訪問(wèn)校園網(wǎng)站不方便或者無(wú)法訪問(wèn)的問(wèn)題,并且用戶還可以在客戶端上進(jìn)行校園卡圈存等操作,使校園一卡通系統(tǒng)移動(dòng)化,具有良好的實(shí)用性。同時(shí),也為廣大Android開(kāi)發(fā)者提供了一種在沒(méi)有服務(wù)器端的開(kāi)放平臺(tái)下進(jìn)行網(wǎng)站客戶端開(kāi)發(fā)的解決方案。

      參考文獻(xiàn):

      [1] 2013-2014年中國(guó)移動(dòng)互聯(lián)網(wǎng)調(diào)查研究報(bào)告[EB/OL].[2014-08-26].[2014-08-29]. http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/ydhlwbg/201408/t20140826_47880.htm.

      [2] 樊慧琴.大學(xué)生手機(jī)市場(chǎng)份額:移動(dòng)約占七成[EB/OL]. [2014-04-03].[2014-08-29]. http://news.youth.cn/gn/201404/t20140403_4969997.htm.

      [3] 高永朋.網(wǎng)站開(kāi)放平臺(tái)的研究與實(shí)現(xiàn)[D].遼寧:東北大學(xué),2013.

      [4] 王曉琳.基于HttpClient的代購(gòu)?fù)郊夹g(shù)研究與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2014,30(7):46-48.

      [5] 姜晗.基于Cookie和Session的身份認(rèn)證機(jī)制的研究與實(shí)現(xiàn)[J].中國(guó)教育技術(shù)裝備,2014,28(4):36-37.

      [6] Jonathan Hedley.jsoup : Java HTML Parser [EB/OL].[2014-08-29]http://jsoup.org/.

      [7] 周鵬飛.基于MJPG_Streamer的移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與研究[D].安徽:安徽理工大學(xué),2013.

      [8] 劉平.Android手機(jī)訪問(wèn)服務(wù)器的一種數(shù)據(jù)交互方法[J].電子設(shè)計(jì)工程.2010,8(9);96-102.

      [9] 鮮海.淺談以C#模擬登錄新浪騰訊微博[J].計(jì)算機(jī)光盤軟件與應(yīng)用.2013,16(20):57-61.

      猜你喜歡
      校園卡開(kāi)放平臺(tái)文檔
      有人一聲不吭向你扔了個(gè)文檔
      基于在線開(kāi)放平臺(tái)的混合式課堂教學(xué)模式構(gòu)建與實(shí)踐
      移動(dòng)支付在校園卡自助補(bǔ)換卡業(yè)務(wù)中的實(shí)現(xiàn)——以濰坊學(xué)院為例
      高校中冒用他人校園卡法律定性問(wèn)題研究
      法制博覽(2019年18期)2019-12-15 21:12:28
      基于AliGenie語(yǔ)音開(kāi)放平臺(tái)的傳統(tǒng)家居智聯(lián)網(wǎng)解決方案
      電子制作(2018年17期)2018-09-28 01:56:46
      淺談拾卡后盜刷校園卡的行為定性
      法制博覽(2018年4期)2018-01-22 15:02:52
      搭建開(kāi)放平臺(tái) 收獲真情實(shí)感——談《品德與生活》教學(xué)中開(kāi)放式教學(xué)的實(shí)施
      基于RI碼計(jì)算的Word復(fù)制文檔鑒別
      Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
      云計(jì)算開(kāi)放平臺(tái)的知識(shí)產(chǎn)權(quán)問(wèn)題研究
      双牌县| 民勤县| 凤凰县| 巴里| 福海县| 藁城市| 闵行区| 景宁| 府谷县| 突泉县| 启东市| 渝中区| 芒康县| 彝良县| 千阳县| 扶风县| 天等县| 揭西县| 宝鸡市| 饶平县| 望都县| 克东县| 罗江县| 什邡市| 友谊县| 淮北市| 壤塘县| 屯门区| 长葛市| 自贡市| 繁昌县| 南陵县| 广西| 叙永县| 哈密市| 尤溪县| 闸北区| 施甸县| 永仁县| 三台县| 施甸县|