当上传成功完成或使用okhttp失败时,是否可以生成回调?

问题描述 投票:0回答:1

目标:知道在Android上使用okttp4进行的上传是成功还是失败。已尝试:一定时间后,将查询发送到服务器。这可能不是最佳方法。代码

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)
        }
    }
})

这可以满足我们的需求。是否有直接方法可以完成此操作而无需对服务器进行特定查询?是否有回调函数可以告诉我文件是否已完全上传成功?

file file-upload callback upload
1个回答
0
投票

我发现要使用的解决方案

CountingRequestBody

装饰OkHttp请求主体以计算在写入它时写入的字节数。能够装饰任何请求正文,但对于跟踪大型请求的上传进度最有用多部分请求。

它可以让应用监控上传活动。这样,您无需发送查询到服务器来监视此过程即可知道它花费了多少时间以及何时完成。

© www.soinside.com 2019 - 2024. All rights reserved.