记一次安卓(Kotlin)-网络请求框架OKHttp/Retrofit_13

485 阅读2分钟

- OKhttp

- 发展背景,优缺点介绍

OKHttp是一个高效的HTTP客户端
1.同时支持HTTP1.1与支持HTTP2.0
2.同时支持同步与异步请求;
3.同时具备HTTP与WebSocket功能;
4.拥有自动维护的socket连接池,减少握手次数;
5.拥有队列线程池,轻松开发;
6.拥有Interceptors(拦截器),轻松处理请求响应额外需求(例如:请求失败重试,响应内容重定向等等);

OkHttp功能:

  • GET
  • POST
  • 添加拦截器
  • GSON解析
  • 文件上传
  • 全局添加Header
  • 缓存文件路径以及缓存容量大小
  • 域名和证书的校验
  • OKHTTP DNS
  • HiOKHttp网络请求框架封装
  • 网络抓包

- 开始使用

在AndroidManifeest.xml添加网络访问权限

<uses-permission android:name="android.permission.INTERNET" />

image.png

添加依赖

implementation("com.squareup.okhttp3:okhttp:4.9.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0") 

同步请求不能在Android的主线程中执行,否则会报错NetworkMainThreadException 注意:无论是同步还是异步请求,接收到Response对象时均在子线程中,需要切换到主线程才能操作UI控件

- 拦截器Interceptor

拦截器是OkHttp当中比较强大的机制,可以监视,重写和重试调用请求.Logging Interceptor是一个比较简单的Interceptor实现,对请求的发送和响应进行了一些信息输出,简单实现.

image.png

image.png

Kotlin中的在类中的init方法会在加载的时候运行,有一些设定会在这里执行

-使用Gson来解析网络请求响应

GsonGoogle开源的一个JSON库.被广泛应用在Android

有个JSON To Kotlin Class的插件可以快速把json字符串生成模型类

在类中右键 -〉 Generate-〉 Kotlin data classes from JSON

- Retrofit

- RESTFUL网络请求框架发展背景,优缺点介绍

Retrofit是一个基于OkHttp的RESTful网络请求框架,功能强大,简洁易用及高可拓展性.基于注解开发.就是一个OKHttp的一个封装.架构于OkHttp之上的高级REST抽象.
同样出自Square公司,做了更多的拓展.

使用示例:

image.png

- 注解类型介绍

  • 用于标注网络请求方式的注解
  • 标记网络请求参数的注解
  • 用于标记网络请求和响应格式的注解

- Retrofit实例创建

image.png

image.png

onFailure 和 onResponse的回调都是在主线程的