Retrofit可以与Gson很好的结合,直接以Call<***Entity>的方式更加便捷的形式返回给我们。
但我们也需要出关心服务器的返回数据,以便我们更好的开发,比如
- 和服务器联调接口,要随时知道服务器都返回了什么
- Gson解析报错了,可能是只是一样解析出错的Log,但我们想知道服务器返回了什么样的数据结构(或者是json的内容)。
- 等等
…
这个时候我们就需要使用我们接下来介绍的内容, 拦截器
拦截器
除了上述那个场景,还可以做哪些呢? 那我们就来统计一下拦截器的日常使用吧:
- 日志Log打印
- 缓存设置
- 请求头处理
日志Log打印
Retrofit的网络请求部分是由Okhttp来负责的,所以我们需要添加拦截器的地方也就是在okHttp中。
拦截器我们可以使用sdk提供的,也可以自己自定义拦截器,这样更加灵活一些。
- 使用OkHttp中的日志拦截器。
导入下面依赖
implementation ‘com.squareup.okhttp3:logging-interceptor:3.4.1’
如何使用呢?
OkHttpClient.Builder builder = new OkHttpClient()
.newBuilder()
.connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS)
.readTimeout(READ_TIME_OUT, TimeUnit.SECONDS)
.addInterceptor(new HeaderInterceptor());
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(interceptor);
}
注意
- BuildConfig.DEBUG 这里的逻辑判断是必须要添加的
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
这里的日志类别可以为 NONE
,BASIC
,HEADERS