1.Retrofit
Retrofit是基于OkHttp封装的网络请求框架,网络请求的工作本质上是OkHttp完成的,而Retrofit仅负责网络请求接口的封装。
OkHttp的缺点:
①配置网络请求非常繁琐,尤其是配置复杂网络请求body、请求头、参数的时候。
②获取结果后需要用户手动解析ResponseBody,难以复用。
③无法自动进行线程切换。
④如果存在嵌套网络请求,就会陷入“回调地狱”。
Retrofit封装OkHttp主要优化了以下几点:
①build模式创建网络请求基本配置。
②用注解类组合HTTP网络请求。
③提供Gson解析返回的json数据。
④Executor完成线程切换。
Retrofit请求实现的核心在于注解、动态代理和反射。通过对接口层的封装,将请求参数、header、url这些网络请求信息封装,然后交给OkHttp完成实际的请求操作。在服务端返回数据后,OkHttp将原始的结果交给Retrofit,然后Retrofit根据不同的场景进行不同的数据解析方式。
使用Retrofit,开发者不用关注网络通信的细节,只需要在接口文件中声明一系列方法和返回值,然后通过注解的方式指定该方法对应哪个服务器接口,以及需要提供哪些参数。当在程序中调用该方法时,Retrofit会自动向对应的服务器接口发起请求,并将响应的数据解析成返回值声明的类型。这样可以用更加面向对象的思维来进行网络操作。
2.Retrofit用法
①添加依赖
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:conve