Retrofit2日志拦截器的使用

 更新时间:2018年11月15日 08:34:48   作者:刚刚了然  
这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

显示样式如下,复制内容的时候使用鼠标中键进行选中

打印内容:code,请求方式,url,请求头,请求体,返回json

class LoggerInterceptor : Interceptor {
 override fun intercept(chain: Interceptor.Chain?): Response {
 val orgRequest = chain!!.request()
 val response = chain.proceed(orgRequest)
 val body = orgRequest.body()
 val sb = StringBuilder()
 if (orgRequest.method() == "POST" && body is FormBody) {
  val body1 = body
  for (i in 0 until body1.size()) {
  sb.append(body1.encodedName(i) + "=" + body1.encodedValue(i) + ",")
  }
  sb.delete(sb.length - 1, sb.length)
  //打印post请求的信息
  Logger.t(AppConfigs.LOGGER_NET_TAG).d("code=" + response.code() + "|method=" + orgRequest.method() + "|url=" + orgRequest.url()
   + "\n" + "headers:" + orgRequest.headers().toMultimap()
   + "\n" + "post请求体:{" + sb.toString() + "}")
 } else {
  //打印get请求的信息
  Logger.t(AppConfigs.LOGGER_NET_TAG).d("code=" + response.code() + "|method=" + orgRequest.method() + "|url=" + orgRequest.url()
   + "\n" + "headers:" + orgRequest.headers().toMultimap())
 }
 //返回json
 val responseBody = response.body()
 val contentLength = responseBody!!.contentLength()
  val source = responseBody.source()
  source.request(java.lang.Long.MAX_VALUE)
  val buffer = source.buffer()
  var charset = UTF8
  val contentType = responseBody.contentType()
  if (contentType != null) {
  try {
   charset = contentType.charset(UTF8)
  } catch (e: UnsupportedCharsetException) {
   return response
  }

  }
  if (contentLength != 0L) {
  //打印返回json
  //json日志使用鼠标中键进行选中
  Logger.t(AppConfigs.LOGGER_NET_TAG).json(buffer.clone().readString(charset))
  }
 return response
 }

}

在Application中进行初始化Logger

val strategy = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false) // 是否显示线程信息,默认为ture
  .methodCount(1)  // 显示的方法行数
  .methodOffset(0) // 隐藏内部方法调用到偏移量
  .tag("tag")
  .build()
 Logger.addLogAdapter(object : AndroidLogAdapter(strategy) {
  override fun isLoggable(priority: Int, tag: String?): Boolean {
  return BuildConfig.DEBUG
  }
 })

除了需要依赖Retrofit2相关依赖外还需要依赖

implementation 'com.orhanobut:logger:2.2.0'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android  CalendarView,DatePicker,TimePicker,以及NumberPicker的使用

    Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使

    这篇文章主要介绍了Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用的相关资料,需要的朋友可以参考下
    2016-12-12
  • Android中Permission权限机制的具体使用

    Android中Permission权限机制的具体使用

    这篇文章主要介绍了Android中Permission权限机制的具体使用,本文讲解了权限级别 protection level、ICC(inter-component communication)权限保护等内容,需要的朋友可以参考下
    2015-04-04
  • 关于Android Studio安装完后activity_main.xml前几行报错的解决建议

    关于Android Studio安装完后activity_main.xml前几行报错的解决建议

    这篇文章主要介绍了关于Android Studio安装完后activity_main.xml前几行报错的解决建议,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android应用内悬浮窗Activity的简单实现

    Android应用内悬浮窗Activity的简单实现

    悬浮窗相信大家应该都不陌生,下面这篇文章主要给大家介绍了关于Android应用内悬浮窗Activity简单实现的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Dagger2新手入门与使用基础教程

    Dagger2新手入门与使用基础教程

    网上随便搜索一下Dragger2,一大堆文章铺天盖地而来,但很多讲的不清楚,下面这篇文章主要给大家介绍了关于Dagger2新手入门与使用基础教程的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-04-04
  • Android自定义View实现公交成轨迹图

    Android自定义View实现公交成轨迹图

    这篇文章主要为大家详细介绍了Android自定义View实现公交成轨迹图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Android入门之Activity间互相传值详解

    Android入门之Activity间互相传值详解

    我们在之前的Service篇章中看到了一种putExtras和getExtras来进行activity与service间的传值。而恰恰这种传值其实也是Android里的通用传值法。它同样可以适用在activity与activity间传值,本文就来和大家详细讲讲
    2022-12-12
  • Android触摸事件传递机制

    Android触摸事件传递机制

    这篇文章主要介绍了Android触摸事件传递机制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android实现精美的聊天界面

    Android实现精美的聊天界面

    这篇文章主要为大家详细介绍了Android实现精美的聊天界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android监听来电和去电的实现方法

    Android监听来电和去电的实现方法

    这篇文章主要介绍了Android监听来电和去电的实现方法,涉及Android中BroadcastReceiver组件的使用及AndroidManifest.xml权限操作的相关技巧,需要的朋友可以参考下
    2016-08-08

最新评论