这是我参与「第四届青训营 」笔记创作活动的第3天
1 Okhttp的问题
- Okhttp只包含了网络请求和接收。
- 网络请求接口的配置繁琐,尤其是需要配置复杂的网络请求的body,请求头,参数的时候。
- 数据解析过程需要手动拿到responsebody然后解析,不能复用。
- 无法自适应线程的切换。
- 存在“回调陷阱”
2 Retrofit 是什么
简单来说,Retrofit是对Okhttp的网络请求封装。因为Retrofit并不会进行网络请求,本质上网络请求还是由Okhttp完成的,Retrofit只是负责对网络请求接口的封装
- App应用程序通过Retrofit请求网络,实际上是用Retrofit接口层封装请求参数,header等,之后交给Okhttp完成
- 在服务端返回结果之后,Okhttp把结果交给Retrofit,再根据需求进行解析。
常用网络请求的对比
3 Retrofit的简单使用
3.1 导入Retrofit库
3.2 创建描述网络访问的接口
retrofit中的注解很多,需要一一搞清楚每个注解的意思。
如上接口中只有一个post请求,@Post("post")代表拼在baseUrl后面的请求方式,@Field(username)表示username(注解中的)=username(参数).
3.3 发起网络请求
创建retrofit->利用retrofit得到接口实例->接口实例获取到call实例->调用call.enqueue()方法异步请求->返回结果
![]()
成功结果如下, 用log打印出来ResponseBody
小提示:记得在AndroidManifest中添加网络访问权限