如何自己動(dòng)手寫HTTP框架(造輪子系列34講)
如何自己動(dòng)手寫HTTP框架(造輪子系列)
隨著Android的發(fā)展,各路大神的貢獻(xiàn),我們可用的輪子越來越多。比如HTTP請(qǐng)求框架,有自家的Volley,Square的okhttp, async-http-lib, 還有聚合版的xUtils以及AFinal。我想你肯定用過其中一個(gè)。
我們當(dāng)然不是要來剖析科普這些第三方的網(wǎng)絡(luò)請(qǐng)求框架,而是嘗試自己造輪子。通過造輪子,感受從0到1的過程,希望能讓大家學(xué)會(huì)舉一反三,在自己的工作中多去思考。
Stay版的HTTP框架比較接地氣,在純粹的HTTP請(qǐng)求之上增加了不少擴(kuò)展,而這些擴(kuò)展又是我們工作中經(jīng)常會(huì)碰到的問題。
比如說:
1. 其他lib返回的服務(wù)器數(shù)據(jù)格式比較少(File, String, JSONObject, JSONArray), 但在我們的框架里只需要聲明泛型T,你就能得到想要的Object。你再也不需要手寫JSON解析
2. 我們的API請(qǐng)求中,常常會(huì)返回一些全局異常,比如TOKEN EXPIRED,賬號(hào)在其他設(shè)備登錄。這時(shí),不管在哪個(gè)activity,我們都需要重新登錄。在我們的框架里提供了全局異常解析,你只需要filter該異常,而不需要在每個(gè)onFailure回調(diào)中判斷處理。
3. 服務(wù)器返回的數(shù)據(jù)可能需要保存至數(shù)據(jù)庫或排序等耗時(shí)操作,在我們的框架中會(huì)通過回調(diào)的方式,將反序列化的Object再包裝一層返回給上層。這樣我們不需要再另開線程,也不用擔(dān)心ANR。
像這樣的擴(kuò)展還有很多,當(dāng)你學(xué)完本課程,你會(huì)找到更多的擴(kuò)展點(diǎn),去根據(jù)自己的產(chǎn)品來定制網(wǎng)絡(luò)請(qǐng)求框架。你也再不用害怕看不懂|改不了這樣的第三方框架。其他功能點(diǎn)Stay不再贅述,你可以通過觀看免費(fèi)試聽課或者查看課程目錄詳情來了解。
課程學(xué)習(xí)tips:
1. 部分課時(shí)會(huì)有作業(yè)思考題,多思考多演練,這樣才會(huì)有提升。
2. 每個(gè)git上的commit對(duì)應(yīng)課程上的一個(gè)課時(shí),請(qǐng)勿直接切換到最新節(jié)點(diǎn),你需要感受的是代碼從0到1的過程,期間的TODO,實(shí)現(xiàn),優(yōu)化甚至重構(gòu)才是精華。
3. 課程中可能遇到的問題也可能是其他同學(xué)的問題,請(qǐng)?jiān)谟懻搮^(qū)中提問,Stay會(huì)統(tǒng)一回復(fù),這樣Stay會(huì)有更多的精力來設(shè)計(jì)其他優(yōu)質(zhì)課程。
4. 課程中的代碼均為Stay手敲,但不推薦大家跟著視頻照抄,務(wù)必一節(jié)課時(shí)或一整期課程看完后用自己的方式來實(shí)現(xiàn)。代碼只是用來借鑒。
5. Stay重思維,輕編碼。我希望傳遞的是思維方法,與我敲的代碼無關(guān),與我的陳述步驟無關(guān)。
課程目錄:
第1章V3版重制課程上線,請(qǐng)從第七章開始看~
1Http框架介紹(不收費(fèi))可試聽整節(jié)00:23:34
第2章基礎(chǔ)框架搭建(不甜不要錢)
1你造HTTPClient還可以這么寫不(不收費(fèi))可試聽整節(jié)00:24:32
2基礎(chǔ)框架就這么搭好了,你敢信?(不收費(fèi))可試聽整節(jié)00:36:55
第3章框架擴(kuò)展
1我要的是對(duì)象,不是你丫json字符串00:30:24
還在對(duì)著json協(xié)議手寫javabean,手動(dòng)寫解析?真low。浪費(fèi)時(shí)間的說。三分鐘創(chuàng)建javabean,調(diào)通API,拿到對(duì)象。不行你打我。
220行代碼支持下載進(jìn)度更新,我說的是真的!00:16:13
3立即取消HTTP請(qǐng)求是騙你的,這里是有延遲的。00:23:07
4timeout自動(dòng)重連有多難?5分鐘就搞定00:13:59
5緩存刷新機(jī)制,不明覺厲00:19:03
6Activity銷毀了Request也要取消,好吧,我也給你加上00:23:52
7講了這么多,做個(gè)小結(jié)吧00:23:20
8光支持HttpClient有啥用,哥兩種都支持的說(HttpUrlConnection)00:32:27
做了那么久的開發(fā),你一定遇到過HttpUrlConnection莫名奇妙的返回-1,而HttpClient下的多文件上傳又TM好坑。
9另外一種嘗試,其實(shí)就愛瞎折騰啊喂00:46:48
10服務(wù)器返回非200時(shí)的錯(cuò)誤處理00:23:39
第4章答疑
1答疑可試聽整節(jié)暫無回放
2答疑暫無回放
第5章
第6章最新v3版HTTP框架課程來了~
第7章大不一樣(GIT+AS+作業(yè)+互動(dòng))
1HTTP課程介紹
2新課程會(huì)怎么講?
第8章基礎(chǔ)框架搭建
1封裝,從最簡(jiǎn)單的地方開始(免費(fèi)試聽)可試聽整節(jié)00:15:07
HttpUrlConnection應(yīng)該怎么來封裝
2將HTTP請(qǐng)求切換到子線程(免費(fèi)試聽)可試聽整節(jié)00:12:10
3預(yù)處理服務(wù)器返回的數(shù)據(jù)(Json轉(zhuǎn)對(duì)象)(免費(fèi)試聽)可試聽整節(jié)00:13:34
4基礎(chǔ)框架搭建完畢00:12:32
第9章功能擴(kuò)展
1文件下載實(shí)現(xiàn)00:09:23
2下載進(jìn)度更新00:13:20
第10章請(qǐng)求中的異常處理
1請(qǐng)求異常統(tǒng)一處理00:10:27
2token過期需要重新登錄如何統(tǒng)一處理?00:13:04
3timeout重試機(jī)制00:13:11
第11章取消請(qǐng)求
1實(shí)現(xiàn):取消HTTP請(qǐng)求00:16:55
2測(cè)試:取消HTTP請(qǐng)求00:08:38
3綁定Activity生命周期,被銷毀時(shí)取消相關(guān)的HTTP Requests00:13:59
第12章專屬場(chǎng)景擴(kuò)展
1服務(wù)器返回的數(shù)據(jù)需要存數(shù)據(jù)庫或再編輯等耗時(shí)操作00:09:46
2List加載更多時(shí),先加載數(shù)據(jù)庫,沒了再請(qǐng)求服務(wù)器00:12:08
3隊(duì)列使用場(chǎng)景(異步消息隊(duì)列,同步隊(duì)列,優(yōu)先級(jí)隊(duì)列)00:16:29
4由于json過大導(dǎo)致gson反序列化OOM如何解決00:15:45
5自拍要發(fā)朋友圈如何實(shí)現(xiàn)(多文件上傳,進(jìn)度更新)00:17:23
第13章小結(jié)
1代碼review
2學(xué)習(xí)前必看
158資源整合網(wǎng):提供各類學(xué)習(xí)資源,名師講座視頻,培訓(xùn)課程視頻,音頻,文檔等···各類教程下載觀看。
- 大。2.73 GB
- 百度網(wǎng)盤觀看下載
- 點(diǎn)數(shù):15 點(diǎn)數(shù)
- 咨詢QQ:1686059668
好消息:為了回饋廣大用戶能學(xué)習(xí)更多知識(shí)。
現(xiàn)只需98開通終身VIP會(huì)員
就可以終身免費(fèi)下載所有資源!
機(jī)會(huì)難得 錯(cuò)過就沒有了
提示:在電腦上打開本站 tpyzk.cn 下載更方便。