一步步教你為網(wǎng)站開發(fā)Android客戶端
注:本文來自友盟-安卓巴士教程大賽第一名獲獎(jiǎng)作品,作者安卓巴士的ID為liupeinye。推薦給所有剛剛開始接觸Android開發(fā)的朋友們!
本文引用地址:http://2s4d.com/article/201610/305463.htm本文面向Android初級(jí)開發(fā)者,有一定的Java和Android知識(shí)即可。
文章覆蓋知識(shí)點(diǎn):HttpWatch抓包,HttpClient模擬POST請(qǐng)求,Jsoup解析HTML代碼,動(dòng)態(tài)更新ListView
背景介紹:客戶端(Client)或稱為用戶端,是指與服務(wù)器相對(duì)應(yīng),為客戶提供本地服務(wù)的程序。而android系統(tǒng)上的90%客戶端軟件都有一個(gè)共性,就是為了改善網(wǎng)頁(yè)在android系統(tǒng)上體驗(yàn)不佳而生,最具有影響力的軟件有:新浪微博、人人網(wǎng)、淘寶等,這類軟件最突出的特點(diǎn)就是,先有網(wǎng)站再有軟件。由于網(wǎng)絡(luò)技術(shù)發(fā)展的多樣性,手機(jī)瀏覽器往往無(wú)法跟隨它的步伐,為改善用戶體驗(yàn),網(wǎng)站客戶端軟件印運(yùn)而生。
以下內(nèi)容100%原創(chuàng),并在安卓巴士論壇首發(fā),如需轉(zhuǎn)載,請(qǐng)注明作者和出處。謝謝合作。
開發(fā)Android網(wǎng)站客戶端通常有兩種方法:第一種,通過服務(wù)端的開放平臺(tái),調(diào)用提供的API接口來開發(fā),比如說open sina;第二種,服務(wù)端沒有提供任何接口,你也沒有服務(wù)端任何數(shù)據(jù)庫(kù)訪問權(quán)限,就是一個(gè)純純粹粹的網(wǎng)站,要你做客戶端。今天,我要和大家分享的正是第二種情況。
這是一個(gè)簡(jiǎn)單的示意圖,告訴我們,數(shù)據(jù)是由網(wǎng)頁(yè)從數(shù)據(jù)庫(kù)中取出,我們要為這個(gè)系統(tǒng)做客戶端,我們就應(yīng)該這樣去改造它。
通過這樣間接的方法來訪問數(shù)據(jù)庫(kù),只要網(wǎng)頁(yè)能看到的內(nèi)容,我們的客戶端都能獲取到,而UI是由你自行制作,就可以使使用體驗(yàn)上一個(gè)臺(tái)階。
既然網(wǎng)頁(yè)是我們的數(shù)據(jù)樞紐,我們就從網(wǎng)頁(yè)分析著手。
該教程來自本人項(xiàng)目-掌上民大-真實(shí)經(jīng)驗(yàn),所以用項(xiàng)目中的”掌上圖書館”板塊來示范。
該項(xiàng)目任務(wù)為中南民族大學(xué)圖書館圖書查詢功能制作客戶端。
首先打開該網(wǎng)址http://www.lib.scuec.edu.cn/,我們會(huì)看到主界面
正中間就是查詢?nèi)肟?,我們輸?rdquo;android”進(jìn)行查詢
得到結(jié)果的網(wǎng)頁(yè),但我們能發(fā)現(xiàn),這個(gè)頁(yè)面是ILAS圖書管理系統(tǒng),所以真正的入口并不是上面紅圈的地方。
所以我繼續(xù)找,經(jīng)過短暫的觀察,發(fā)現(xiàn)入口在這里
我們點(diǎn)擊進(jìn)入
果然就是這貨,我們點(diǎn)擊書目查詢
就是它了。真正的入口就在這里,這時(shí)我們打開HttpWatch軟件,點(diǎn)”Record”,在搜索框里輸入”android”,點(diǎn)擊查詢,抓取以”android”為關(guān)鍵字搜索時(shí)瀏覽器的所有包。待結(jié)果界面載入完成后,HttpWatch上就會(huì)出現(xiàn)如下信息
我們先看Summary選項(xiàng)卡,我們可以初步了解,這是一個(gè)POST請(qǐng)求(Http請(qǐng)求中的一種,另一種是GET),POST到的網(wǎng)址是http://coin.lib.scuec.edu.cn/cgi-bin/IlaswebBib。
這樣我們的思路就清晰了,我們的客戶端需要模擬瀏覽器,向上述地址POST一個(gè)包,那個(gè)地址肯定會(huì)返回一個(gè)Content給我們,不出意外的話,Content里面就是我們要的書目信息。那么,瀏覽器POST上去的內(nèi)容是什么呢?我們點(diǎn)擊這條POST請(qǐng)求,看詳細(xì)信息,
由于是POST請(qǐng)求,我們先看POST DATA,里面是以鍵值對(duì)的形式存儲(chǔ)的,這里顯示了我們?yōu)g覽器在我們搜索”android”時(shí),POST的所有數(shù)據(jù)。那這些鍵值對(duì)又代表了什么呢,我們打開這個(gè)網(wǎng)頁(yè)的源碼來一探究竟。
從這段可以看出v_index是表示查找途徑的它有TITLE,AUTHOR,SUBJECT,CLASSNO,ISBN,CALLNO六種值
FLD_DAT_BEG和FLD_DAT_END分別是開始和結(jié)束年份
v_value表示用戶在搜索框中輸入的內(nèi)容
v_paggnum表示每頁(yè)顯示的書目條數(shù),有10 15 20三種
v_seldatabases是檢索庫(kù) 有0 1 2三種值v_LogicSrch是檢索方式 有0 1兩種值
評(píng)論