Daniel HuangTue, Dec 27, 2022 10:56 AM
以往為了檢查 API 呼叫的 Request 或 Response 是否正確,都是土法煉鋼式的自行加註 Log
。後來改用 Retrofit 之後,發現要加 Log
變得好麻煩,這才發現原來有 HttpLoggingInterceptor
可以自動印 Log 。
OkHttp 的 Interceptors 介面有許多實作的類別,可以針對 API 呼叫做很多不一樣的事情,有興趣的讀者可以多利用這個關鍵字下去尋找相關的資料,本篇文章就不贅述。
注意! 套件引用的版本,請以官方最新版本為準。
HttpLoggingInterceptor
到 OkHttpClient
什麼都不印
印 Request 跟 Response 的 Header。
Body & Header 全部都印
公司專案中有一個需要上傳 01:30 長度的影片,檔案大小約 25MB。之前測試上傳都沒有問題,但在某測試版本中加上 HttpLoggingInterceptor
後,只要有影片的上傳都會閃退。
查詢 Firebase 與重現的錯誤都出現一樣的 OutOfMemoryError
:
經查測後發現與 StackOverflow 上的這篇 Upload large video file use Retrofit(Android) have OutOfMemoryError 相符。
既然問題是出在 HttpLoggingInterceptor
所產生的 OutOfMemoryError
,那其實不一定要像 StackOverflow 上說的改成 Level.NONE
,只要不是設定 Level.BODY
都可以。
調整設定後確定可以正常上傳。🤗
同步發表在 iThelp
Android/Network