如何自己动手写HTTP框架(造轮子系列34讲)
如何自己动手写HTTP框架(造轮子系列)
随着Android的发展,各路大神的贡献,我们可用的轮子越来越多。比如HTTP请求框架,有自家的Volley,Square的okhttp, async-http-lib, 还有聚合版的xUtils以及AFinal。我想你肯定用过其中一个。
我们当然不是要来剖析科普这些第三方的网络请求框架,而是尝试自己造轮子。通过造轮子,感受从0到1的过程,希望能让大家学会举一反三,在自己的工作中多去思考。
Stay版的HTTP框架比较接地气,在纯粹的HTTP请求之上增加了不少扩展,而这些扩展又是我们工作中经常会碰到的问题。
比如说:
1. 其他lib返回的服务器数据格式比较少(File, String, JSONObject, JSONArray), 但在我们的框架里只需要声明泛型T,你就能得到想要的Object。你再也不需要手写JSON解析
2. 我们的API请求中,常常会返回一些全局异常,比如TOKEN EXPIRED,账号在其他设备登录。这时,不管在哪个activity,我们都需要重新登录。在我们的框架里提供了全局异常解析,你只需要filter该异常,而不需要在每个onFailure回调中判断处理。
3. 服务器返回的数据可能需要保存至数据库或排序等耗时操作,在我们的框架中会通过回调的方式,将反序列化的Object再包装一层返回给上层。这样我们不需要再另开线程,也不用担心ANR。
像这样的扩展还有很多,当你学完本课程,你会找到更多的扩展点,去根据自己的产品来定制网络请求框架。你也再不用害怕看不懂|改不了这样的第三方框架。其他功能点Stay不再赘述,你可以通过观看免费试听课或者查看课程目录详情来了解。
课程学习tips:
1. 部分课时会有作业思考题,多思考多演练,这样才会有提升。
2. 每个git上的commit对应课程上的一个课时,请勿直接切换到最新节点,你需要感受的是代码从0到1的过程,期间的TODO,实现,优化甚至重构才是精华。
3. 课程中可能遇到的问题也可能是其他同学的问题,请在讨论区中提问,Stay会统一回复,这样Stay会有更多的精力来设计其他优质课程。
4. 课程中的代码均为Stay手敲,但不推荐大家跟着视频照抄,务必一节课时或一整期课程看完后用自己的方式来实现。代码只是用来借鉴。
5. Stay重思维,轻编码。我希望传递的是思维方法,与我敲的代码无关,与我的陈述步骤无关。
课程目录:
第1章V3版重制课程上线,请从第七章开始看~
1Http框架介绍(不收费)可试听整节00:23:34
第2章基础框架搭建(不甜不要钱)
1你造HTTPClient还可以这么写不(不收费)可试听整节00:24:32
2基础框架就这么搭好了,你敢信?(不收费)可试听整节00:36:55
第3章框架扩展
1我要的是对象,不是你丫json字符串00:30:24
还在对着json协议手写javabean,手动写解析?真low。浪费时间的说。三分钟创建javabean,调通API,拿到对象。不行你打我。
220行代码支持下载进度更新,我说的是真的!00:16:13
3立即取消HTTP请求是骗你的,这里是有延迟的。00:23:07
4timeout自动重连有多难?5分钟就搞定00:13:59
5缓存刷新机制,不明觉厉00:19:03
6Activity销毁了Request也要取消,好吧,我也给你加上00:23:52
7讲了这么多,做个小结吧00:23:20
8光支持HttpClient有啥用,哥两种都支持的说(HttpUrlConnection)00:32:27
做了那么久的开发,你一定遇到过HttpUrlConnection莫名奇妙的返回-1,而HttpClient下的多文件上传又TM好坑。
9另外一种尝试,其实就爱瞎折腾啊喂00:46:48
10服务器返回非200时的错误处理00:23:39
第4章答疑
1答疑可试听整节暂无回放
2答疑暂无回放
第5章
第6章最新v3版HTTP框架课程来了~
第7章大不一样(GIT+AS+作业+互动)
1HTTP课程介绍
2新课程会怎么讲?
第8章基础框架搭建
1封装,从最简单的地方开始(免费试听)可试听整节00:15:07
HttpUrlConnection应该怎么来封装
2将HTTP请求切换到子线程(免费试听)可试听整节00:12:10
3预处理服务器返回的数据(Json转对象)(免费试听)可试听整节00:13:34
4基础框架搭建完毕00:12:32
第9章功能扩展
1文件下载实现00:09:23
2下载进度更新00:13:20
第10章请求中的异常处理
1请求异常统一处理00:10:27
2token过期需要重新登录如何统一处理?00:13:04
3timeout重试机制00:13:11
第11章取消请求
1实现:取消HTTP请求00:16:55
2测试:取消HTTP请求00:08:38
3绑定Activity生命周期,被销毁时取消相关的HTTP Requests00:13:59
第12章专属场景扩展
1服务器返回的数据需要存数据库或再编辑等耗时操作00:09:46
2List加载更多时,先加载数据库,没了再请求服务器00:12:08
3队列使用场景(异步消息队列,同步队列,优先级队列)00:16:29
4由于json过大导致gson反序列化OOM如何解决00:15:45
5自拍要发朋友圈如何实现(多文件上传,进度更新)00:17:23
第13章小结
1代码review
2学习前必看
更多知识
-
抖音直播打号起号实时录屏,全程4小时起号操作,毫无保留
你是不是入局抖音直播,却卡在“起号难、打号慢”的第一关?精心筹备开播,要么直播间零人在线、冷冷清清,要么流量忽高忽低、留不住人;跟着教程学起号,却全是过时理论,实操环节一笔带过,自己上手依旧无从下手;
分半
40 阅读
-
绩效管理与团队激励实战,即学即用,成为一个真正的绩效激励专家
课程介绍:掌握诊断企业绩效管理有效性的评测方法学会制定支撑于战略的绩效目标(4+7)解决绩效考核与排名的公平性与接受度问题学会设计从战略到目标到考核到分钱的方案掌握制定薪酬包并科学分配薪酬包的方案拥有
★芭比々娃娃
43 阅读
-
小红书带货达人启航计划,从0-1运营小红书账号
想做小红书带货达人,却卡在起点无从下手?看着别人靠小红书带货月入过万,自己却连账号定位都搞不清,发布的笔记无人问津、没有流量;不懂平台规则、不会做内容、不会选品带货,哪怕盲目跟风发笔记,也始终无法实现
你陪我醉i
76 阅读
-
抖音35W粉丝博主AI解压视频制作教学,从零开始用AI打造爆款解压视频,涨粉变现两不误
自从有了AI,在创意方面真的是只有我们想不到,没有做不到的。解压类视频一直是涨粉快的赛道,像修马蹄、搭积木这类内容,大家看着就觉得放松。今天给大家分享抖音某大佬的解压视频制作教学,一个超适合新手的,非
等风也等你
57 阅读
-
小红书带货达人实战营:账号注册定位、内容创作、选品策略、带货技巧、流量运营等
小红书带货达人实战营:账号注册定位、内容创作、选品策略、带货技巧、流量运营等课程简介本课程是专为新手量身打造的小红书带货达人启航计划,聚焦从0到1运营小红书账号的全流程实战。课程摒弃空泛理论,全程实操
轻吟潜唱丶华灯初上
42 阅读
-
付费文1+2:年轻人还能抓住的几大隐形翻身机会:打开思路,发现那些闷声发财的冷门赛道
付费文1+2:年轻人还能抓住的几大隐形翻身机会:打开思路,发现那些闷声发财的冷门赛道文章介绍本课程聚焦当下年轻人还能抓住的几大隐形翻身机会,深度剖析“涉外经济”与“银发经济”两大红利赛道。第一部分围绕
那思念爱尖叫
68 阅读
-
一张照片秒变N种专属表情包,三步搞定可爱搞怪治愈风,从此斗图聊天不再到处存别人图
一张照片秒变N种专属表情包,三步搞定可爱搞怪治愈风,从此斗图聊天不再到处存别人图课程简介这是一套教你用AI技术零门槛制作专属表情包的趣味实操课程。只需一张普通照片,通过简单的三步流程——上传照片、选择
哭了,谁疼
33 阅读
-
六大豆包AI修图指令全公开:高清画质逼真细节一键生成,每张图都像专业场地实拍大片
六大豆包AI修图指令全公开:高清画质逼真细节一键生成,每张图都像专业场地实拍大片课程简介这是一套聚焦AI生图实战的技巧课程,系统传授利用豆包AI生成专业级场景画面的六个核心指令。课程涵盖六大不同风格的
一开始就结束
81 阅读
撰写回复