欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-17 08:20:52
retrofit post请求上传表单和文件最重要的就是就是去构建requestbody,今天为大家带来一种超级简单的上传方式 body方式: 1、retrofit接口...

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: ");
          }
        });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: