android网络通信-Retrofit | 青训营笔记

95 阅读1分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

1 Okhttp的问题

  • Okhttp只包含了网络请求和接收。
  • 网络请求接口的配置繁琐,尤其是需要配置复杂的网络请求的body,请求头,参数的时候。
  • 数据解析过程需要手动拿到responsebody然后解析,不能复用。
  • 无法自适应线程的切换。
  • 存在“回调陷阱”

2 Retrofit 是什么

简单来说,Retrofit是对Okhttp的网络请求封装。因为Retrofit并不会进行网络请求,本质上网络请求还是由Okhttp完成的,Retrofit只是负责对网络请求接口的封装

image.png

  • App应用程序通过Retrofit请求网络,实际上是用Retrofit接口层封装请求参数,header等,之后交给Okhttp完成
  • 在服务端返回结果之后,Okhttp把结果交给Retrofit,再根据需求进行解析。

常用网络请求的对比

image.png

3 Retrofit的简单使用

3.1 导入Retrofit库

image.png

3.2 创建描述网络访问的接口

image.png retrofit中的注解很多,需要一一搞清楚每个注解的意思。 如上接口中只有一个post请求,@Post("post")代表拼在baseUrl后面的请求方式,@Field(username)表示username(注解中的)=username(参数).

3.3 发起网络请求

创建retrofit->利用retrofit得到接口实例->接口实例获取到call实例->调用call.enqueue()方法异步请求->返回结果

image.png image.png

成功结果如下, 用log打印出来ResponseBody image.png

小提示:记得在AndroidManifest中添加网络访问权限

image.png