我们在使用retrofit调用后台接口的时候,往往由于封装的比较严密,我们在查看自己请求的参数和获取返回的原始数据的时候比较麻烦,那么我们都会希望能够在封装的请求基类里面进行统一的日志打印,这时候就需要构建一个拦截器。
Android studio的引入:
compile 'com.github.zhaokaiqiang.klog:library:1.6.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
在配置请求基类里面添加相应的拦截器以及KLog日志打印方法:
public static ApiService getDefault() {
if (SERVICE == null) {
//手动创建一个OkHttpClient并设置超时时间
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
KLog.json("TAG", message);
}
});
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClientBuilder.addInterceptor(interceptor);
SERVICE = new Retrofit.Builder()
.client(httpClientBuilder.build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(Url.BASE_URL)
.build().create(ApiService.class);
}
return SERVICE;
}
网友评论