fix(network): 解决SSE流式接口的日志记录阻塞问题
- 添加Content-Type检查,对event-stream类型的响应跳过body日志记录 - 避免source.request(MAX)调用阻塞SSE流式传输 - 移除多余的空行以优化代码结构
这个提交包含在:
父节点
e2cae52dbc
当前提交
8582316cb8
@ -44,6 +44,12 @@ class HeaderInterceptor(val context: Context) : Interceptor {
|
|||||||
|
|
||||||
val response = chain.proceed(request)
|
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 {
|
response.body()?.also {
|
||||||
if (!bodyHasUnknownEncoding(headers) && hasBody(response)) {
|
if (!bodyHasUnknownEncoding(headers) && hasBody(response)) {
|
||||||
val source: BufferedSource = it.source()
|
val source: BufferedSource = it.source()
|
||||||
@ -62,7 +68,6 @@ class HeaderInterceptor(val context: Context) : Interceptor {
|
|||||||
var charset = UTF8
|
var charset = UTF8
|
||||||
it.contentType()?.also { its -> charset = its.charset(Charset.forName("UTF-8"))!! }
|
it.contentType()?.also { its -> charset = its.charset(Charset.forName("UTF-8"))!! }
|
||||||
|
|
||||||
|
|
||||||
if (isPlaintext(buffer)) {
|
if (isPlaintext(buffer)) {
|
||||||
buffer.clone().readString(charset).log()
|
buffer.clone().readString(charset).log()
|
||||||
}
|
}
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户