Как проверить прогресс загрузки с MockWebServer
Я написал небольшой фрагмент кода, который загружает файл, используя OkHttp3
и который сообщает о прогрессе через слушателя, для этого я использовал пример реализации, приведенный здесь в рецепте. Теперь, чтобы проверить это, я использую MockWebServer
моя проблема в том, что если MockResponse
Тело маленькое, фактический прогресс не сообщается. Чтобы получить большое тело ответа, я попробовал 2 подхода:
Наличие тела ответа, превышающего размер внутреннего буфера:
val bytes = ByteArray(10000) Random().nextBytes(bytes) server.enqueue(MockResponse() .setResponseCode(200) .setBody(bytes.toByteString().utf8()))
В этом случае возвращается только один ответ, или, другими словами,
ForwardingSource#read
вызывается только один раз.Вызов
setChunkedBody
, это сделаетForwardingSource#read
вызываться несколько раз, пока ответ не будет прочитан полностью:val bytes = ByteArray(1024) Random().nextBytes(bytes) server.enqueue(MockResponse() .setResponseCode(200) .setChunkedBody(bytes.toByteString().utf8(), 256))
Проблема здесь в том, что
content-length
равен -1, поэтому прогресс не может быть рассчитан.
Как это можно решить?