雖然,網(wǎng)絡(luò)上有很多的網(wǎng)絡(luò)請求框架,在git上面也有不少。雖然,很流行retrofit(當(dāng)然,我下一篇也會寫這個玩意)。但是,我感覺,不夠簡潔和好用。所以,自己就索性寫了一個。
當(dāng)然,東西有點(diǎn)多,就不一一介紹了,就講幾個關(guān)鍵點(diǎn)。其他的,我會提供我的git地址。自行看源碼。
ok,先講一個東西。我只講前端的。
以Android為例,我們網(wǎng)絡(luò)請求,是用來干嘛的?
答案:請求服務(wù)器,獲取數(shù)據(jù)或者傳遞數(shù)據(jù)。
那么作為Android端,需要關(guān)注什么呢?
這個問題,可能就沒有前面一個問題好回答了。我這里只是給出自己的理解:
什么時候開始請求(獲取數(shù)據(jù)和傳遞數(shù)據(jù)都通稱為請求),請求結(jié)果是什么,請求過程中該怎么顯示(請求是一個“緩慢”的過程,要給用戶一個比較好的體驗(yàn)),請求完成之后干什么?
當(dāng)然,這不是標(biāo)準(zhǔn)答案,我只是提出我考慮的點(diǎn)。
其實(shí),換成簡潔一些的語言就是:請求開始,請求結(jié)果,請求中的loading,請求結(jié)束后UI的更新或者數(shù)據(jù)的更新。
那么,我們寫這個框架,就要從這幾個角度來思考。
這里,我要著重說一點(diǎn)的是,我們封裝一個東西,一定是為了解決某個或者某一類問題,才做的事情。我們用一個框架,也是要從我們的具體使用場景出發(fā)去考慮是否用這個框架。
好了,道理就講到這里,后面我開始講我寫的這個東西了。我先講使用:



以上就是,要實(shí)現(xiàn)一個網(wǎng)絡(luò)請求所需要的步驟。當(dāng)然,第三步,沒什么需要講的,是個請求都是這么寫的。
是不是很簡潔,特別是調(diào)用的時候,每一句話,都代表了我前面講的那些關(guān)注點(diǎn)。最后再補(bǔ)充一點(diǎn),就是用于一些需要統(tǒng)一處理的情況:

簡單使用,基本就是這樣。
我這個框架里面,幾乎可以實(shí)現(xiàn)你常用的所有需求。
自定義header,上傳文件,普通請求,get,post,body三種請求方式也封裝了。自定義loading,loading和請求綁定,不需要去管理等。
結(jié)構(gòu)也比較簡單:

當(dāng)然,要想真正了解和使用,還是需要下載源碼看看的。
https://github.com/LuckyCode1992/network_framework