diff --git a/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt b/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt index f2651bc..d8c6dd8 100644 --- a/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt +++ b/app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt @@ -7,6 +7,7 @@ import com.xuqm.base.extensions.log import com.xuqm.base.extensions.loge import okhttp3.Headers import okhttp3.Interceptor +import okhttp3.RequestBody import okhttp3.Response import okio.Buffer import okio.BufferedSource @@ -37,7 +38,7 @@ class HeaderInterceptor(val context: Context) : Interceptor { // context.getStringForPreferences(SHARE_UESR_TOKEN).loge() val request = requestBuilder.build() - "${request.url}(${request.method})".loge() + logRequest(request) val headers = request.headers @@ -79,6 +80,34 @@ class HeaderInterceptor(val context: Context) : Interceptor { return response } + private fun logRequest(request: okhttp3.Request) { + val requestBodyText = request.body?.let { bodyToString(it) }.orEmpty() + buildString { + append("request: ") + append(request.method) + append(" ") + append(request.url) + append('\n') + append("headers: ") + append(request.headers) + if (requestBodyText.isNotBlank()) { + append('\n') + append("body: ") + append(requestBodyText) + } + }.loge() + } + + private fun bodyToString(requestBody: RequestBody): String { + return runCatching { + val buffer = Buffer() + requestBody.writeTo(buffer) + buffer.readString(UTF8) + }.getOrElse { + "unable to read request body: ${it.message}" + } + } + private fun bodyHasUnknownEncoding(headers: Headers): Boolean { val contentEncoding = headers["Content-Encoding"] return (contentEncoding != null && !contentEncoding.equals("identity", ignoreCase = true) @@ -125,4 +154,4 @@ class HeaderInterceptor(val context: Context) : Interceptor { ignoreCase = true ) } -} \ No newline at end of file +}