java - Retrofit 2 RequestBody writeTo() 方法调用了两次

标签 java android upload retrofit2

Retrofit 2 RequestBody writeTo()方法调用了两次,我使用的代码如下:

ProgressRequestBody requestVideoFile = new ProgressRequestBody(videoFile, new ProgressRequestBody.UploadCallbacks() {

    VideoUploadStore store = new VideoUploadStore();

    @Override
    public void onProgressUpdate(int percentage) {
        if (!mIsCancelled) {
            Log.i("UploadServiceManager", "Read Percentage : " + percentage);
            data.setUploadPercentage(percentage);
            store.updateUploadData(data);
        }
    }

    @Override
    public void onError() {
        if(!mIsCancelled) {
            data.setUploadPercentage(0);
            store.updateUploadData(data);
        }
    }

    @Override
    public void onFinish() {

    }
});
MultipartBody.Part multipartVideo = MultipartBody.Part.createFormData("File", videoFile.getName(), requestVideoFile);

最佳答案

下面的解决方案可能会帮助您解决问题,尽管可能为时已晚。 :p

删除 Api 客户端中的 HttpLoggingInterceptor 对象,它不会执行 writeTo() 函数两次。基本上,HttpLoggingInterceptor 通过调用首先加载数据缓冲区(用于内部日志记录目的) writeTo() 然后再次调用 writeTo() 将数据上传到服务器。

  HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
  logging.setLevel(HttpLoggingInterceptor.Level.BODY);
  httpClient.addInterceptor(logging);

关于java - Retrofit 2 RequestBody writeTo() 方法调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691610/

相关文章:

java - 如何在一个字段上应用 Jackson SerializationFeature?

java - Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

android - 创建 "Battery usage" Intent android

android - Webview 按钮在网站加载后停止工作

android - 崩溃/重新安装后 LogCat 不显示任何内容

php - Valum 的文件 uploader ?

java - 同步库/第三方类?

java - 使用 Java-8 时可变参数中的 ClassCastException

php - 删除文件上传的文件扩展名

PHP 表单 - 上传文件,想要使用 Silex 但不想使用 FormBuilder