android - 如何使用 Retrofit 或类似工具将文件流式传输到服务器?

标签 android video-streaming retrofit

我可以使用 Retrofit 的 MultiPart 注释将文件毫无问题地上传到我的服务器。

但是,我想要的是将仍在写入磁盘的文件流式传输到服务器。是否可以使用 Retrofit?

最佳答案

多部分请求改造使用 okhttp3.RequestBody。因此,您必须创建自己的 RequestBody 来生成数据。

这是取自 OkHttp 食谱 (https://github.com/square/okhttp/wiki/Recipes#post-streaming) 的示例

public static final MediaType MEDIA_TYPE_MARKDOWN
  = MediaType.parse("text/x-markdown; charset=utf-8");

RequestBody requestBody = new RequestBody() {
  @Override public MediaType contentType() {
    return MEDIA_TYPE_MARKDOWN;
  }

  @Override public void writeTo(BufferedSink sink) throws IOException {
    sink.writeUtf8("Numbers\n");
    sink.writeUtf8("-------\n");
    for (int i = 2; i <= 997; i++) {
      sink.writeUtf8(String.format(" * %s = %s\n", i, factor(i)));
    }
  }

  private String factor(int n) {
    for (int i = 2; i < n; i++) {
      int x = n / i;
      if (x * i == n) return factor(x) + " × " + i;
    }
    return Integer.toString(n);
  }
};

关于android - 如何使用 Retrofit 或类似工具将文件流式传输到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240437/

相关文章:

android - Android Studio 是否跟踪使用情况?

android - 使用 Jetpack Compose 绘制线条动画

java - 使用 intent 的 Android 6.0 instagram 图像共享不起作用

c++ - 使用 Qt 播放实时视频流

java - Android Retrofit 我没有收到 JSON

Android 从 AsyncTask 更新 UI 线程的最佳方式

tcp - FFMPEG 流原始 H264

javascript - Android 的 WebRTC 支持

java - 改造中缓存的非静态和静态问题

android - 无法解析 Retrofit 2 中的错误