From 9e5f68c3200624d7ff2b16272fa4107f8496ef92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 21 Apr 2026 18:49:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor(network):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=AF=B7=E6=B1=82=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加RequestBody导入以支持请求体读取 - 实现详细的请求日志记录函数logRequest - 添加请求体转字符串的辅助函数bodyToString - 替换简单的URL日志为完整的请求详情日志 - 包含请求方法、URL、请求头和请求体的完整信息 - 添加异常处理确保请求体读取失败时的稳定性 --- .../glass/repository/HeaderInterceptor.kt | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) 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 +}