起点学堂 - - 为你精选优质好课

标题: 自己动手写HTTP框架 [打印本页]

作者: admin    时间: 2018-3-30 08:27
标题: 自己动手写HTTP框架
[造轮子系列] 自己动手写HTTP框架
2 |! a2 B- D( N2 H
随着Android的发展,各路大神的贡献,我们可用的轮子越来越多。比如HTTP请求框架,有自家的Volley,Square的okhttp, async-http-lib, 还有聚合版的xUtils以及AFinal。我想你肯定用过其中一个。$ ]4 v2 k' ^1 J" E9 s2 i  R6 t
我们当然不是要来剖析科普这些第三方的网络请求框架,而是尝试自己造轮子。通过造轮子,感受从0到1的过程,希望能让大家学会举一反三,在自己的工作中多去思考。
Stay版的HTTP框架比较接地气,在纯粹的HTTP请求之上增加了不少扩展,而这些扩展又是我们工作中经常会碰到的问题。 5 k* z" t2 G: }; M+ `+ a
' M0 Q% i, }9 c8 G$ c
* Y+ K0 n2 x1 F. G
比如说:: q0 {7 m! ]3 t# A0 [/ Q
1. 其他lib返回的服务器数据格式比较少(File, String, JSONObject, JSONArray), 但在我们的框架里只需要声明泛型T,你就能得到想要的Object。你再也不需要手写JSON解析( N+ [9 u) c; a6 E" M3 U$ Z! |
2. 我们的API请求中,常常会返回一些全局异常,比如TOKEN EXPIRED,账号在其他设备登录。这时,不管在哪个activity,我们都需要重新登录。在我们的框架里提供了全局异常解析,你只需要filter该异常,而不需要在每个onFailure回调中判断处理。5 K) k3 ^& r0 c/ g- K( p
3. 服务器返回的数据可能需要保存至数据库或排序等耗时操作,在我们的框架中会通过回调的方式,将反序列化的Object再包装一层返回给上层。这样我们不需要再另开线程,也不用担心ANR。

8 U' f( {5 I0 T- n, ?: `
像这样的扩展还有很多,当你学完本课程,你会找到更多的扩展点,去根据自己的产品来定制网络请求框架。你也再不用害怕看不懂|改不了这样的第三方框架。其他功能点Stay不再赘述,你可以通过观看免费试听课或者查看课程目录详情来了解。1 u, m- a0 X0 p1 {8 V* c% q
5 V6 U, p; N3 t' {+ W2 C" V/ D
7 n% h; U$ d- b- T: b
课程学习tips:( ]0 ^5 R8 o( D* M5 j  p: {
1. 部分课时会有作业思考题,多思考多演练,这样才会有提升。
2. 每个git上的commit对应课程上的一个课时,请勿直接切换到最新节点,你需要感受的是代码从0到1的过程,期间的TODO,实现,优化甚至重构才是精华。
3. 课程中可能遇到的问题也可能是其他同学的问题,请在讨论区中提问,Stay会统一回复,这样Stay会有更多的精力来设计其他优质课程。
4. 课程中的代码均为Stay手敲,但不推荐大家跟着视频照抄,务必一节课时或一整期课程看完后用自己的方式来实现。代码只是用来借鉴。
5. Stay重思维,轻编码。我希望传递的是思维方法,与我敲的代码无关,与我的陈述步骤无关。+ ^5 C- Z1 v( {! b7 \  D
7 G: L- Z+ y4 d  }





课程目录:

- b/ O9 E5 K3 M7 l3 g
第1章V3版重制课程上线,请从第七章开始看~
1Http框架介绍(不收费)可试听整节00:23:34$ ?0 J/ p1 v) R8 Y& F% J& T
7 F; r2 K6 P( T! D

第2章基础框架搭建(不甜不要钱)& ]; n# W5 |: F: J7 V# d9 n
1你造HTTPClient还可以这么写不(不收费)可试听整节00:24:32/ r$ w! L) u( x4 D  m8 b; r) E- e. j
2基础框架就这么搭好了,你敢信?(不收费)可试听整节00:36:55

. L' a% O" ~& V# ?% @7 e
第3章框架扩展# O+ ]; ~4 X: u4 u5 y. J
1我要的是对象,不是你丫json字符串00:30:24% s0 i7 l/ ^% K8 E6 x7 X; E2 `
还在对着json协议手写javabean,手动写解析?真low。浪费时间的说。三分钟创建javabean,调通API,拿到对象。不行你打我。- c, E- b7 j8 @8 m) _
220行代码支持下载进度更新,我说的是真的!00:16:13
3立即取消HTTP请求是骗你的,这里是有延迟的。00:23:07
4timeout自动重连有多难?5分钟就搞定00:13:59% g! G& L& l$ X5 a* {* i( B  D
5缓存刷新机制,不明觉厉00:19:03+ l9 M9 [! x6 }1 k8 q/ }
6Activity销毁了Request也要取消,好吧,我也给你加上00:23:52
7讲了这么多,做个小结吧00:23:208 Y# j5 q' B9 d1 G& k2 H" @  e/ ]
8光支持HttpClient有啥用,哥两种都支持的说(HttpUrlConnection)00:32:27
做了那么久的开发,你一定遇到过HttpUrlConnection莫名奇妙的返回-1,而HttpClient下的多文件上传又TM好坑。1 N' p4 E# r8 K# Y
9另外一种尝试,其实就爱瞎折腾啊喂00:46:48- n; g6 B/ g) D1 `/ f8 N
10服务器返回非200时的错误处理00:23:39

# Y$ \5 _3 M3 n. x
第4章答疑  C4 D$ O7 H+ i+ `
1答疑可试听整节暂无回放' E3 d, Q# y& L. s
2答疑暂无回放
第5章
8 u3 T) m5 [3 ]

第6章最新v3版HTTP框架课程来了~( x7 }9 _3 W9 v3 y6 M

& K/ M4 B. B; X9 X4 r* z
第7章大不一样(GIT+AS+作业+互动)
1HTTP课程介绍2 ?  F; c0 U- x# e
2新课程会怎么讲?3 s, J4 O6 m9 b2 k8 m5 t
9 l, x' p2 z, f4 H, w

第8章基础框架搭建
1封装,从最简单的地方开始(免费试听)可试听整节00:15:07
HttpUrlConnection应该怎么来封装( E: p/ t  Z6 h7 ~# [
2将HTTP请求切换到子线程(免费试听)可试听整节00:12:10* b0 |, V1 {; k  J2 H/ _: g3 K
3预处理服务器返回的数据(Json转对象)(免费试听)可试听整节00:13:34* `: G7 J1 a  U6 F* [; v7 q
4基础框架搭建完毕00:12:32

# y  ~. g& h$ ]1 D" A  a
第9章功能扩展8 p0 K! q) j# h  ]
1文件下载实现00:09:23  k/ Y6 j; U" y: d7 a
2下载进度更新00:13:20


第10章请求中的异常处理3 S+ L7 J9 U0 i
1请求异常统一处理00:10:27
2token过期需要重新登录如何统一处理?00:13:045 T) U# b) z' x/ M" k
3timeout重试机制00:13:11# E. j* M$ |, |; I8 ]& A
, {( t) Y: I% D1 I7 X

第11章取消请求
1实现:取消HTTP请求00:16:557 a+ W2 p  h1 g5 o4 T1 A
2测试:取消HTTP请求00:08:38
3绑定Activity生命周期,被销毁时取消相关的HTTP Requests00:13:591 v6 |! y! s( r; S- ]. n+ g
& W- E9 S8 M/ z: ~/ D
. c1 }7 @6 `8 t
第12章专属场景扩展& W  u# q/ H- @& A6 T& e* |" _; d
1服务器返回的数据需要存数据库或再编辑等耗时操作00:09:46
2List加载更多时,先加载数据库,没了再请求服务器00:12:08+ U. f' [' j$ H( I& d7 [4 V1 S
3队列使用场景(异步消息队列,同步队列,优先级队列)00:16:29! b, G9 H, h7 R* `- d
4由于json过大导致gson反序列化OOM如何解决00:15:45
5自拍要发朋友圈如何实现(多文件上传,进度更新)00:17:23
0 f; b& n5 u- {# }/ F4 {, d
' P# V, G0 B% T2 s  y
第13章小结$ d& _. b& j7 Q
1代码review(免费试听)可试听整节00:12:09
2学习前必看(免费试听)可试听整节00:07:55



作者: huyiping    时间: 2018-3-30 09:02
1v1飘过
作者: 18621337830    时间: 2018-3-30 15:49
看起来不错
作者: q445624451    时间: 2018-3-30 19:05
打酱油的人拉,回复下赚取积分
作者: 小小    时间: 2018-3-30 23:27
鼎力支持!!
作者: 0316xiatian    时间: 2018-4-1 12:31
回个帖子,下班咯~
作者: 一周梦    时间: 2018-4-2 10:10
好帖必须得顶起
作者: 554067267    时间: 2018-4-2 19:56
very good
作者: 雪琪果    时间: 2018-4-2 23:15
1v1飘过
作者: 欧美幼幼90    时间: 2018-4-3 10:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1830002602    时间: 2018-4-3 14:34
向楼主学习
作者: s702198088    时间: 2018-4-3 23:58
支持,楼下的跟上哈~
作者: 炯楠    时间: 2018-4-4 12:49
为毛老子总也抢不到沙发?!!
作者: SZShawn    时间: 2018-4-4 14:02
前排支持下
作者: rqcoy    时间: 2018-4-4 14:16
广告位,,坐下看看
作者: hebutljp    时间: 2018-4-5 09:25
专业抢沙发的!哈哈
作者: hongrixxb    时间: 2018-4-5 13:14
报告!别开枪,我就是路过来看看的。。。
作者: wangl    时间: 2018-4-5 22:29
沙发???
作者: 849305234    时间: 2018-4-6 14:12
好,很好,非常好!
作者: 杨玉祥    时间: 2018-4-7 12:50
报告!别开枪,我就是路过来看看的。。。
作者: 樊磊    时间: 2018-4-8 09:27
专业抢沙发的!哈哈
作者: simson    时间: 2018-4-9 09:10
垃圾内容,路过为证。
作者: 张cj    时间: 2018-4-9 14:57
发发呆,回回帖,工作结束~
作者: 周明珠    时间: 2018-4-9 17:00
一直在看
作者: ljq    时间: 2018-4-9 20:24
不错 支持一个了
作者: anpmz    时间: 2018-4-10 12:47
我也顶起出售广告位
作者: Vince    时间: 2018-4-12 13:11
支持,赞一个
作者: 老王学统计    时间: 2018-4-12 16:01
打酱油的人拉,回复下赚取积分
作者: ntdvb    时间: 2018-4-12 17:32
占位编辑
作者: TQB10086    时间: 2018-4-12 19:33
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
作者: 358113923    时间: 2018-4-13 11:53
路过的帮顶
作者: pdt    时间: 2018-4-13 22:24
路过
作者: v789456    时间: 2018-4-14 10:04
沙发位出租,有意请联系电话:13838384381
作者: 小眼浩子    时间: 2018-4-14 10:07
边撸边过
作者: vivi    时间: 2018-4-14 14:39
顶起出售广告位
作者: 丹小陈    时间: 2018-4-14 19:52
打酱油的人拉,回复下赚取积分
作者: 13997331070    时间: 2018-4-15 14:14
楼主呀,,,您太有才了。。。
作者: 13325261672    时间: 2018-4-15 18:20
为了三千积分!
作者: jun0    时间: 2018-4-15 21:04
支持支持再支持
作者: 628f7a8f    时间: 2018-4-16 09:07
这么强,支持楼主,佩服
作者: lunluo22    时间: 2018-4-16 09:36
有空一起交流一下
作者: lxb200893965    时间: 2018-4-16 10:28
OMG!介是啥东东!!!
作者: chime235    时间: 2018-4-16 10:35
支持楼主,用户楼主,楼主英明呀!!!
作者: 啦啦啦    时间: 2018-4-16 12:14
众里寻他千百度,蓦然回首在这里!
作者: 55556666    时间: 2018-4-16 13:07
非常好,顶一下
作者: 玩玩没想到    时间: 2018-4-16 13:40
这么强,支持楼主,佩服
作者: urrbn    时间: 2018-4-16 15:18
秀起来~
作者: nova1234    时间: 2018-4-16 16:02
为了三千积分!
作者: 角落的萝卜    时间: 2018-4-17 09:56
我是个凑数的。。。
作者: ieieeirri    时间: 2018-4-17 12:09
我了个去,顶了
作者: aa123321    时间: 2018-4-17 18:29
为了三千积分!
作者: 我是你哥哥    时间: 2018-4-17 18:39
我也顶起出售广告位
作者: 66好好    时间: 2018-4-17 20:58
1v1飘过
作者: 橘又青。    时间: 2018-4-18 09:28
珍爱生命,果断回帖。
作者: 13126109538    时间: 2018-4-18 10:29
LZ帖子不给力,勉强给回复下吧
作者: 1999    时间: 2018-4-18 16:53
沙发???
作者: 画角声断樵门    时间: 2018-4-18 21:31
楼下的接上
作者: yzzx1008    时间: 2018-4-18 21:35
报告!别开枪,我就是路过来看看的。。。
作者: qwerty    时间: 2018-4-18 23:03
学习下
作者: wcc    时间: 2018-4-19 12:50
嘘,低调。
作者: xiaoyan94328    时间: 2018-4-19 14:00
支持支持再支持
作者: 之凡沧海    时间: 2018-4-19 20:51
秀起来~
作者: 老牛同学    时间: 2018-4-20 09:00
前排支持下了哦~
作者: xebih    时间: 2018-4-20 10:21
我也是坐沙发的
作者: pingguoba    时间: 2018-4-20 11:17
报告!别开枪,我就是路过来看看的。。。
作者: 1003775974    时间: 2018-4-20 12:47
我也顶起出售广告位
作者: lyt5257    时间: 2018-4-20 15:07
支持,赞一个
作者: 爱笑的小怡姐    时间: 2018-4-20 16:28
路过 帮顶 嘿嘿
作者: weskygo    时间: 2018-4-20 21:38
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
作者: 17132418071    时间: 2018-4-20 23:16
楼主呀,,,您太有才了。。。
作者: boboyansong    时间: 2018-4-20 23:31
元芳你怎么看?
作者: 月月酱    时间: 2018-4-21 09:58
支持楼主,用户楼主,楼主英明呀!!!
作者: sqydb    时间: 2018-4-21 12:52
无论是不是沙发都得回复下
作者: 13193397455    时间: 2018-4-21 13:21
高手云集 果断围观
作者: hu395245467    时间: 2018-4-21 16:30
元芳你怎么看?
作者: haoge    时间: 2018-4-21 18:55
OMG!介是啥东东!!!
作者: 大烟呀    时间: 2018-4-21 20:33
占位编辑
作者: w61913351    时间: 2018-4-21 21:46
LZ帖子不给力,勉强给回复下吧
作者: yangjun911    时间: 2018-4-21 22:37
秀起来~
作者: angness    时间: 2018-4-21 22:40
路过 帮顶 嘿嘿
作者: peirenquan    时间: 2018-4-22 19:29
围观 围观 沙发在哪里!!!
作者: 18370663801    时间: 2018-4-25 12:34
LZ敢整点更有创意的不?兄弟们等着围观捏~
作者: lyt1989328    时间: 2018-4-26 09:52
我也是坐沙发的
作者: syb9655    时间: 2018-4-27 10:43
好,很好,非常好!
作者: liulu159357    时间: 2018-4-27 10:50
路过的帮顶
作者: fashionxc    时间: 2018-4-28 15:42
学习下
作者: 726726726    时间: 2018-4-28 19:08
打酱油的人拉,回复下赚取积分
作者: 504067266    时间: 2018-4-28 20:50
不错 支持一个了
作者: ivy0613koo    时间: 2018-5-1 17:42
路过的帮顶
作者: 13041010191    时间: 2018-5-3 23:39
嘘,低调。
作者: 1973461685    时间: 2018-5-4 09:26
前排支持下了哦~
作者: 鹿鹿鹿小仙女    时间: 2018-5-4 15:51
1v1飘过
作者: wfz05209051    时间: 2018-5-8 15:24
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
作者: 260874853    时间: 2018-5-8 17:15
呵呵,低调,低调!
作者: 536818799    时间: 2018-5-9 11:32
确实不错,顶先
作者: 刻薄的镜子3    时间: 2018-5-10 18:16
看起来不错
作者: 2271487522    时间: 2018-5-12 18:14
支持支持再支持
作者: 李庸人    时间: 2018-5-13 19:06
呵呵,低调,低调!
作者: 凝夜紫    时间: 2018-5-14 13:16
我了个去,顶了
作者: xuejiaming707    时间: 2018-5-14 17:43
嘘,低调。




欢迎光临 起点学堂 - - 为你精选优质好课 (http://qd.qdxuetang.com/) Powered by Discuz! X3.4