Retrofit 、RxJava以及OkHttp 都是最近非常火的开源框架,通过Retrofit 、RxJava以及OkHttp的结合,可以非常便捷地实现网络请求。但是在使用之前,我们经常需要对Retrofit进行一些基础配置,来实现更好的网络请求,比如设置 Json 转换器、RxJava 适配器、设置 Debug Log 模式、设置超时、错误重连,以及配置缓存等等一些内容。今天就主要分享一下这方面的内容。
引入依赖
//引入okhttp |
从引入的依赖便可看出本篇文章以常用的一些网络请求为例。采用RxJava和Retroifit结合的方式,返回的数据json格式。
下面开始一步步配置Retrofit常用的网络请求配置。
Log信息拦截器
// log用拦截器 |
HttpLoggingInterceptor 是一个拦截器,用于输出网络请求和结果的 Log,可以配置 level 为 BASIC / HEADERS / BODY。通过Log信息拦截器方便我们进行调试,验证网络请求结果。OkHttpClient.Builder builder= new OkHttpClient.Builder();
builder.addInterceptor(loggingInterceptor);
向okhttp中添加拦截器。拦截器的功能很强大,关于拦截器,可以看这篇文章了解。
缓存机制
无网络时,也能显示数据
//设置缓存目录 |
当网络不可用的时候,强制使用缓存。当网络可用的时候,直接访问网络,即把缓存中内容的期限设置为0。这样浏览器直接认为缓存过期,走网络访问途径。当网络不可用的时候,把缓存中内容的期限设置为4周,即4周内只要进行访问,都认为数据有效。
Cache-control 是由服务器返回的 Response 中添加的头信息,它的目的是告诉客户端是要从本地读取缓存还是直接从服务器摘取消息。它有不同的值,每一个值有不同的作用。关于更多CacheControl缓存策略的了解,可以参考这篇文章。
超时、重连
超时需重连//设置超时
builder.connectTimeout(15, TimeUnit.SECONDS);
builder.readTimeout(20, TimeUnit.SECONDS);
builder.writeTimeout(20, TimeUnit.SECONDS);
//错误重连
builder.retryOnConnectionFailure(true);
设置Retrofit
retrofit = new Retrofit.Builder() |
至此,便完成了Retrofit配置的简单配置,以上配置仅仅满足常用的网络请求。如果有其他要求,可以在此基础上进行修改。
下面是以上配置的全部代码的地址,并进行了简单的封装,感兴趣的可以下载。
代码地址