软件编程
位置:首页>> 软件编程>> Android编程>> Android使用 Retrofit 2.X 上传多文件和多表单示例

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

作者:陪你唠嗑  发布时间:2023-08-06 03:48:25 

标签:retrofit,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: ");
         }
       });

来源:http://www.jianshu.com/p/e4a7478689ce?utm_source=tuicool&utm_medium=referral

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com