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