相关疑难解决方法(0)

使用OKHTTP跟踪多部分文件上载的进度

我正在尝试实现一个进度条来指示多部分文件上载的进度.

我已经阅读了对这个答案的评论 - /sf/answers/1699994341/,我必须将传递给传递给RequestBody的接收器包装起来并提供跟踪移动的字节的回调.

我已经创建了一个自定义RequestBody并使用CustomSink类包装了接收器,但是通过调试我可以看到字节是由RealBufferedSink ln 44 编写的,而自定义接收器写入方法只运行一次,不允许我跟踪移动的字节数.

    private class CustomRequestBody extends RequestBody {

    MediaType contentType;
    byte[] content;

    private CustomRequestBody(final MediaType contentType, final byte[] content) {
        this.contentType = contentType;
        this.content = content;
    }

    @Override
    public MediaType contentType() {
        return contentType;
    }

    @Override
    public long contentLength() {
        return content.length;
    }

    @Override
    public void writeTo(BufferedSink sink) throws IOException {
        CustomSink customSink = new CustomSink(sink);
        customSink.write(content);

    }
}


private class CustomSink implements BufferedSink {

    private static final String TAG = "CUSTOM_SINK"; …
Run Code Online (Sandbox Code Playgroud)

android okhttp okio

35
推荐指数
2
解决办法
2万
查看次数

改造 - OkHttp 3 - 分段上传进度

是否可以使用 Retrofit 2 和 OkHttp 3获得上传文件的实际进度?

我正在测试这个解决方案:https : //stackoverflow.com/a/36260692/1885562 但它没有像你预期的那样工作。几十毫秒后,我获得了 100% 的进度,但上传应该需要 10 秒以上(1Mbit 连接上的 3MB 文件)。我猜在实际的 HTTP 调用之前有某种缓冲区。

如何解决这个问题?

android file-upload retrofit okhttp retrofit2

5
推荐指数
0
解决办法
570
查看次数

OkHttp上传进度与实际上传不同步

我正在尝试使用OkHttp跟踪上传的进度.我创建了一个RequestBody带有以下主体的自定义(由此答案提供),它写入接收器并发布进度.

public class CountingFileRequestBody extends RequestBody {
    private static final String TAG = "CountingFileRequestBody";

    private final ProgressListener listener;
    private final String key;
    private final MultipartBody multipartBody;
    protected CountingSink mCountingSink;

    public CountingFileRequestBody(MultipartBody multipartBody,
                                   String key,
                                   ProgressListener listener) {
        this.multipartBody = multipartBody;
        this.listener = listener;
        this.key = key;
    }

    @Override
    public long contentLength() throws IOException {
        return multipartBody.contentLength();
    }

    @Override
    public MediaType contentType() {
        return multipartBody.contentType();
    }

    @Override
    public void writeTo(BufferedSink sink) throws IOException {
        mCountingSink = new …
Run Code Online (Sandbox Code Playgroud)

android file-upload okhttp3

5
推荐指数
1
解决办法
747
查看次数

如何在Android中检测上传/下载传输速率?

我正在开发一个上载大量数据的应用程序。我想确定上传的传输速率,以显示在通知中。

  • 一篇文章建议使用WifiInfo不适用于移动数据。
  • 另一篇文章建议获取网络类型以估计速度。

我对这些帖子中的答案不满意,因此我再次询问。

我看过显示上传传输速率的应用程序,以及一些自定义ROM,例如Resurrection Remix

如何确定这些上传的传输速率?

java android android-networking android-internet okhttp

4
推荐指数
2
解决办法
795
查看次数