【发布时间】:2022-01-19 11:17:10
【问题描述】:
从服务器向客户端返回文件内容的典型流程是:
1.) 获取文件的输入流 2.) 将流的块写入打开的套接字 3.) 关闭输入流
当使用 OkHttp 的 mockwebserver 时,MockResponse 只接受 Okio 缓冲区。这意味着我们必须在发送之前将整个输入流内容读入缓冲区。如果文件太大,这可能会导致 OutOfMemory 异常。有没有办法在不使用双工响应的情况下完成我上面概述的逻辑流程,还是应该使用另一个库?这是我目前在 kotlin 中发送文件的方式:
val inputStream = FileInputStream(file)
val source = inputStream.source()
val buf = Buffer()
buf.writeAll(source.buffer())
source.close()
val response = HTTP_200
response.setHeader("Content-Type", "video/mp4")
response.setBody(buf)
return response
// Dispatch the response, etc...
【问题讨论】:
标签: okhttp mockwebserver