Я создаю приложение для Android, которое использует Retrofit для работы в сети.
Вот код:
private val loggingInterceptor by lazy {
HttpLoggingInterceptor(HttpLoggingInterceptor.Logger { message -> Log.d(TAG, message) }).apply {
level = if(BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE
}
}
val client = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build()
Retrofit.Builder()
.baseUrl(" https://mybaseurl.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
Я использую HttpLoggingInterceptor, однако журналы слишком многословны, поскольку в нем регистрируются все заголовки ..
content-language: en-GB
content-type: application/json
date: Sun, 07 Jul 2019 12:52:36 GMT
p3p: CP="NON CUR OTPi OUR NOR UNI"
transfer-encoding: chunked
cache-control: no-cache,no-store,must-reva
x-powered-by: Servlet/3.0
expires: Thu, 01 Dec 1994 16:00:00 GMT
pragma: no-cache
and more....
Если я переключусь на LogLevel Basic, я не получу запрос и ответ, а только URL-адреса.
Кстати, заглянув внутрь HttpLoggingInterceptor код:
boolean logHeaders = logBody || level == Level.HEADERS;
Так что, похоже, что нет реального способа зарегистрировать тело без заголовков.
Есть какой-нибудь хакерский способ или обходной путь?