欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android使用 Retrofit 2.X 上传多文件和多表单示例

时间:2021-07-17 08:09:45|栏目:Android代码|点击:

retrofit post请求上传表单和文件最重要的就是就是去构建RequestBody,今天为大家带来一种超级简单的上传方式

Body方式:

1、Retrofit接口RetrofitInterface

 @POST(URLConstant.URL_PATH)
  Flowable<UploadImgBean> upload(@Body RequestBody Body);

2、Retrofit的配置

private static RetrofitInterface getRetrofitInterface(String baseUrl) {
    if (retrofitInterface == null) {
      Retrofit retrofit = new Retrofit.Builder()
          .baseUrl(baseUrl)
          .addConverterFactory(GsonConverterFactory.create())
//        .addConverterFactory(ScalarsConverterFactory.create()) //string
          .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
          .build();
      retrofitInterface = retrofit.create(RetrofitInterface.class);
    }
    return retrofitInterface;
  }

3、构建body

 public static Flowable<UploadImgBean> upload(List<File> fileList) {
    //构建body
//addFormDataPart()第一个参数为表单名字,这是和后台约定好的
    MultipartBody.Builder builder = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("username", "name") 
        .addFormDataPart("phone", "phone")
   //注意,file是后台约定的参数,如果是多图,file[],如果是单张图片,file就行
    for (File file : fileList) {
      //这里上传的是多图
      builder.addFormDataPart("file[]", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
    }
    RequestBody requestBody = builder.build();
    return getRetrofitInterface(URLConstant.URL_BASE).upload(requestBody);
  }

4、开始执行上传

HttpUtils.upload(mUploadFileList)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new DisposableSubscriber<UploadImgBean>() {
          @Override
          public void onNext(UploadImgBean uploadImgBean) {
            Log.i(TAG, "onNext: " ); 
            }
          }

          @Override
          public void onError(Throwable throwable) {
            Log.i(TAG, "onError: --->" + throwable.getMessage());
          }

          @Override
          public void onComplete() {
            Log.i(TAG, "onComplete: ");
          }
        });

上一篇:Android RecyclerView区分视图类型的Divider的实现

栏    目:Android代码

下一篇:Android 第三方应用接入微信平台研究情况分享(二)

本文标题:Android使用 Retrofit 2.X 上传多文件和多表单示例

本文地址:http://www.codeinn.net/misctech/158308.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有