【问题标题】:Is there a way to generate a callback when an upload is completed successfully or failed with okhttp?当上传成功完成或使用 okhttp 失败时,有没有办法生成回调?
【发布时间】:2020-05-20 08:39:01
【问题描述】:

目标
了解在 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】:

    我找到的解决方案是使用

    CountingRequestBody

    装饰一个 OkHttp 请求体以计算写入时写入的字节数。可以
    装饰任何请求体,但对于跟踪大的上传进度最有用
    多部分请求。

    它让应用监控上传活动。 通过这种方式,您无需向服务器发送查询以监控此过程,就可以知道它花费了多少时间以及何时完成。

    【讨论】:

      猜你喜欢
      • 2015-08-27
      • 1970-01-01
      • 2021-01-18
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多