如何自己动手写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学习前必看
更多知识
-
阿冲文字组拆解进阶课
课程目录:第一节直播 .mp4第二节 .mp4第三节课 .mp4第四节-学习方法梳理 .mp4
笑中含恨╮
81 阅读
-
2026全新AI漫剧课程:覆盖创作全链路,教你写作分镜剪辑配音一站式打造漫剧作品
2026全新AI漫剧课程:覆盖创作全链路,教你写作分镜剪辑配音一站式打造漫剧作品一、课程内容简介本课程围绕AI漫剧基础全流程展开教学,从行业生态认知入手,系统讲解AI写作、小说转剧本、AI绘图、分镜脚
回眸一笑泪倾城
47 阅读
-
26年拼多多最新起店流程,从0-1让你全方位学习和了解
3月10日更新:拼多多2026最新线上课,从0-1让你全方位学习和了解!课程目录:2026.3.23号运营篇-26年最新版活动课程(二).mp42026.3.8运营篇-26年最新版活动课程(一).mp
无节奏不成方圆
69 阅读
-
叶建平:从0到1全面搭建企业财务管理体系
课程目录:1--财务观念篇_先导片 没有财务思维,再努力也赚不到钱.mp42--财务观念篇_第1章第1节 财务就是会计吗?.mp43--财务观念篇_第1章第2节 财务能给公司做什么?.mp44--财务
殇魂破
43 阅读
-
AI实战技能课,真正掌握AI领域的核心能力,把AI从”听懂了”变成”能用,能做,能交付,能复用
课程介绍:这不是一门”讲概念”的AI课,而是一门以结果为导向的实战技能课。课程核心目标很明确:帮助你真正掌握AI领域的核心能力,把AI从”听懂了”变成”能用,能做,能交付,能复用”。无论你是个人想提升
网名大全
87 阅读
-
AI亲人复活变身教学,最近超级火爆的项目,涨粉超级快,私域引流代做服务,收徒等
课程介绍最近网上这种账号超级火爆,帮助亲人复活。或者人物替换等。目前全网涨粉超级快,还可以私域引流代做服务。收徒等。今天云天就分享一下这个教程。课程目录飞书图文教学,简单易操作,一学就会
杀戮浪者
71 阅读
-
风翮设计思维觉醒课
课程目录:001.开篇_成为高手的第一步 .mp4002.第一章_成功设计的关键_《什么才是好设计》 .mp4003.第一章_成功设计的关键_《重识形状颜色》 .mp4004.第一章_成功设计的关键_
梦夏
41 阅读
-
吴梓境:资本思维翻转财富—人人都需要的资本思维课
课程目录:1_先导片.mp42_1、为什么人人都需要“资本思维”?普通人改变财富命运的机会.mp43_2、如何拥有资本思维?5步看清经济形势和赚钱风口.mp44_3、什么时候才能轮到我有钱?从房地产行
我陪着你走
52 阅读
撰写回复