有云:“知其然,当知其所以然”。在之前的项目中,都用到了Retrofit + RxJava + OkHttp的组合来进行网络请求,这也是当下主流的网络请求框架,使用起来着实方便高效。但只是停留在了会用的位置,没有真正的去解析理解其内部的实现,或者说实现原理。所以,接下来准备用几篇文章对这个经典组合进行总结,学习。从这篇的基础用法开始。
先对这三个开源库解释下:
OkHttp:网络请求库;
Retrofit :对网络请求的封装,底层的实现是OkHttp;
RxJava:一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库–这是Rxjava的自我介绍。
对于三者来说,Retrofit 负责请求的数据和请求的结果,使用接口的方式呈现,OkHttp 负责请求的过程,RxJava 负责异步,各种线程之间的切换。
Retrofit用法
以获取豆瓣电影Top 250为例:
https://api.douban.com/v2/movie/
- 引入对应的包
compile 'com.squareup.retrofit2:retrofit:2.1.0'//retrofit
compile 'com.google.code.gson:gson:2.6.2'//Gson 库
- 定义请求接口
public interface NetServers {
@GET ("top250")
Call<MoveResponse> getTopMove(@Query("start") int start, @Query("count")int count);
}
这里采用Get的方式进行网络获取,当然支持包括Post在内的多种请求方式,相关的注解可参考
https://www.jianshu.com/p/308f3c54abdd 这篇文章,总结的比较详细。
- 创建Retrofit实例,完成相关配置
public class RetrofitIntances {
private static final String MAIN_URL = "https://api.douban.com/v2/movie/";
private static RetrofitIntances mRetrofit = null;
private static NetServers mNetServer;
private Retrofit retrofi