Есть ли способ сгенерировать обратный вызов, если загрузка успешно завершена или произошла ошибка с помощью okhttp? - PullRequest
0 голосов
/ 04 февраля 2020

Цель :
Определение того, была ли загрузка, выполненная с помощью okttp4 на Android, успешной или неудачной.
Попытка :
Отправка запроса на сервер после определенного количества времени. Возможно, это не оптимальный подход.
Код :

var url = HttpUrl.Builder()
    .scheme("http")
    .host(ConstantValues.HOST)
    .port(ConstantValues.PORT)
    .addPathSegment(relativeUrl)
    .addQueryParameter("fileName", "expectedFileSize")
    .build()

val request = Request.Builder()
    .url(url)
    .get().build()

val client = OkHttpClient()

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: java.io.IOException) {
        e.printStackTrace()
    }

    override fun onResponse(call: Call, response: Response) {
        if (response.isSuccessful) {
            val result: String = response.body?.string() ?: "failed"
            checkSizesMatch(result)
        }
    }
})

Это нормально для наших нужд. Есть ли прямой способ выполнить sh, не задавая специфический c запрос к серверу? Есть ли обратный вызов, который может сказать мне, был ли файл полностью загружен успешно?

1 Ответ

0 голосов
/ 04 февраля 2020

Я нашел решение использовать

CountingRequestBody

Декорирует тело запроса OkHttp для подсчета количества байтов, записанных при его записи. Может
украшать любое тело запроса, но наиболее полезно для отслеживания процесса загрузки больших
многочастных запросов.

Позволяет приложению отслеживать активность загрузки. Таким образом, вы можете сказать, сколько времени это занимает и когда оно завершено, не отправляя запрос на сервер для мониторинга этого процесса.

...