Kaynağa Gözat

fix(network): 解决SSE流式接口的日志记录阻塞问题

- 添加Content-Type检查,对event-stream类型的响应跳过body日志记录
- 避免source.request(MAX)调用阻塞SSE流式传输
- 移除多余的空行以优化代码结构
徐勤民 15 saat önce
ebeveyn
işleme
8582316cb8

+ 6 - 1
app/src/main/java/com/nova/brain/glass/repository/HeaderInterceptor.kt

@@ -44,6 +44,12 @@ class HeaderInterceptor(val context: Context) : Interceptor {
 
         val response = chain.proceed(request)
 
+        // SSE 流式接口(text/event-stream)跳过 body 日志,避免 source.request(MAX) 阻塞流式传输
+        val contentType = response.header("Content-Type") ?: ""
+        if (contentType.contains("event-stream", ignoreCase = true)) {
+            return response
+        }
+
         response.body()?.also {
             if (!bodyHasUnknownEncoding(headers) && hasBody(response)) {
                 val source: BufferedSource = it.source()
@@ -62,7 +68,6 @@ class HeaderInterceptor(val context: Context) : Interceptor {
                 var charset = UTF8
                 it.contentType()?.also { its -> charset = its.charset(Charset.forName("UTF-8"))!! }
 
-
                 if (isPlaintext(buffer)) {
                     buffer.clone().readString(charset).log()
                 }