Retrofit2日志攔截器的使用
顯示樣式如下,復(fù)制內(nèi)容的時候使用鼠標(biāo)中鍵進行選中
打印內(nèi)容: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日志使用鼠標(biāo)中鍵進行選中 Logger.t(AppConfigs.LOGGER_NET_TAG).json(buffer.clone().readString(charset)) } return response } }
在Application中進行初始化Logger
val strategy = PrettyFormatStrategy.newBuilder() .showThreadInfo(false) // 是否顯示線程信息,默認(rèn)為ture .methodCount(1) // 顯示的方法行數(shù) .methodOffset(0) // 隱藏內(nèi)部方法調(diào)用到偏移量 .tag("tag") .build() Logger.addLogAdapter(object : AndroidLogAdapter(strategy) { override fun isLoggable(priority: Int, tag: String?): Boolean { return BuildConfig.DEBUG } })
除了需要依賴Retrofit2相關(guān)依賴外還需要依賴
implementation 'com.orhanobut:logger:2.2.0'
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android中TextView實現(xiàn)分段顯示不同顏色的字符串
在做項目的時候,遇到過一行文字有兩種顏色。在菜鳥的時候直接會想到用多個TextView來實現(xiàn),所以下面這篇文章主要給大家介紹了關(guān)于Android中TextView如何實現(xiàn)分段顯示不同顏色字符串的相關(guān)資料,需要的朋友可以參考下。2017-12-12Android通過RemoteViews實現(xiàn)跨進程更新UI示例
本篇文章主要介紹了Android通過RemoteViews實現(xiàn)跨進程更新UI示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Android鍵盤輸入語言設(shè)置默認(rèn)打開myanmar緬甸語的步驟
如何實現(xiàn)Android鍵盤輸入語言默認(rèn)打開為myanmar緬甸語,如果要設(shè)置某種語言在輸入法默認(rèn)打開可按一下步驟添加文件,我這里已經(jīng)驗證時OK的2013-06-06Android中Activity常用功能設(shè)置小結(jié)(包括全屏、橫豎屏等)
這篇文章主要介紹了Android中Activity常用功能設(shè)置小結(jié)(包括全屏、橫豎屏等),以簡單實例形式分析了Android實現(xiàn)全屏、豎屏及一直顯示等的技巧與注意事項,需要的朋友可以參考下2015-10-10Android程序自動更新功能模塊的實現(xiàn)方法【附完整demo源碼下載】
這篇文章主要介紹了Android程序自動更新功能模塊的實現(xiàn)方法,具備完整的自動檢測更新及下載、安裝等功能,并附帶完整的demo源碼供大家下載參考,需要的朋友可以參考下2016-08-08