我什么都没找到,但是在我叫response.body.charStream()
或string()
之后,下一行将收到一个空的正文。我也可以在评估中看到它。
为什么会发生以及如何处理?
我有一个Authenticator使用charStream处理一个请求,但是我需要获取响应错误正文以在UseCase中处理另一个请求。
嗯,我在okhttp docs中找到了这个:响应正文只能使用一次。
所以,我决定克隆缓冲区。我在HttpLoggingInterceptor中找到了一个示例,该示例由平方自己完成。现在,它正在工作。
private fun cloneBuffer(body:ResponseBody):String{
val source = body.source()
source.request(Long.MAX_VALUE)
val buffer = source.buffer
return buffer.clone().readString(Charset.forName("UTF-8"))
}
我发现issue大约是同一件事。还有更好的方法!
val responseBody = response.peekBody(Long.MAX_VALUE)
这不会占用缓冲区。