Retrofit之日志拦截

作者: ChicoChen | 来源:发表于2017-03-24 11:11 被阅读1798次
写在之前

Retrofit已经出现了很长一段时间了,目前最新版本是2.2.0,所以本篇文章也主要是针对Retrofit2的日志拦截

首先,要实现Retrofit的日志拦截功能,你需要在build.gradle中添加

compile 'com.squareup.okhttp3:logging-interceptor:3.6.0' 

在开始实现日志功能之前,我们需要知道Retrofit是依赖OkHttp来进行网络请求的,所以,我们拦截日志主要是实现OkHttp的日志记录,那么我们首先要实例一个OkHttpClient.Builder

 OkHttpClient.Builder client = new OkHttpClient.Builder();

好了,准备工作做完了,那就开始具体实现日志

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();  
logging.setLevel(Level.BODY);

以上代码是初始化日志拦截器,并设置日志Level(这块稍后在说明)

各个子项都准备好了,那么就把他们组合起来

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();  
//设置日志Level
logging.setLevel(Level.BODY);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();  
//添加拦截器到OkHttp,这是最关键的
httpClient.addInterceptor(logging);

Retrofit retrofit = new Retrofit.Builder()  
   .baseUrl(API_BASE_URL)
   .addConverterFactory(GsonConverterFactory.create())
   .client(httpClient.build())
   .build();

以上就是具体的拦截功能,除此之外,我们了解一下上文提到的日志拦截器的Level

HttpLoggingInterceptor为我们提供了四种不同的Level,它们分别是NONE, BASIC, HEADERS, BODY
分别表示

  • NONE:没有记录
  • BASIC:日志请求类型,URL,请求体的大小,响应状态和响应体的大小
  • HEADERS:日志请求和响应头,请求类型,URL,响应状态
  • BODY:日志请求和响应标头和正文

根据需求选择什么Logging Level,主要在于你的~~~

通常我们显示日志主要是在开发环境,而在生产环境,我们则希望日志能够被关闭,那么我们可以设置如下

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

if (BuildConfig.DEBUG) {  
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(Level.BODY);

    httpClient.addInterceptor(logging);
}

Retrofit retrofit = new Retrofit.Builder()  
   .baseUrl(API_BASE_URL)
   .addConverterFactory(GsonConverterFactory.create())
   .client(httpClient.build())
   .build();

这样,我们就会在Debug模式下进行日志显示,这种方式也是被强烈推荐的。

同时你也可以针对开发环境和生产环境设置不同的Logging Level。

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();

if (BuildConfig.DEBUG) {  
    // development build
    logging.setLevel(Level.BODY);
} else {
    // production build
    logging.setLevel(Level.BASIC);
}

httpClient.addInterceptor(logging);

Retrofit retrofit = new Retrofit.Builder()  
   .baseUrl(API_BASE_URL)
   .addConverterFactory(GsonConverterFactory.create())
   .client(httpClient.build())
   .build();

以上就是所有关于Retrofi2的Logging内容了,你可以根据你实际的项目进行合理的设置。

写在最后

希望这篇文章能够给你一点小小的提示,喜欢的话可以给我点个赞,这是对我最大的鼓励,最后提供一个Retrofit写的比较好的链接
Retrofit — Getting Started and Creating an Android Client

相关文章

网友评论

    本文标题:Retrofit之日志拦截

    本文链接:https://www.haomeiwen.com/subject/hmnxottx.html