Android使用 Retrofit 2.X 上传多文件和多表单示例
retrofitpost请求上传表单和文件最重要的就是就是去构建RequestBody,今天为大家带来一种超级简单的上传方式
Body方式:
1、Retrofit接口RetrofitInterface
@POST(URLConstant.URL_PATH) Flowableupload(@BodyRequestBodyBody);
2、Retrofit的配置
privatestaticRetrofitInterfacegetRetrofitInterface(StringbaseUrl){ if(retrofitInterface==null){ Retrofitretrofit=newRetrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) //.addConverterFactory(ScalarsConverterFactory.create())//string .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); retrofitInterface=retrofit.create(RetrofitInterface.class); } returnretrofitInterface; }
3、构建body
publicstaticFlowableupload(List fileList){ //构建body //addFormDataPart()第一个参数为表单名字,这是和后台约定好的 MultipartBody.Builderbuilder=newMultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("username","name") .addFormDataPart("phone","phone") //注意,file是后台约定的参数,如果是多图,file[],如果是单张图片,file就行 for(Filefile:fileList){ //这里上传的是多图 builder.addFormDataPart("file[]",file.getName(),RequestBody.create(MediaType.parse("image/*"),file)); } RequestBodyrequestBody=builder.build(); returngetRetrofitInterface(URLConstant.URL_BASE).upload(requestBody); }
4、开始执行上传
HttpUtils.upload(mUploadFileList) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(newDisposableSubscriber(){ @Override publicvoidonNext(UploadImgBeanuploadImgBean){ Log.i(TAG,"onNext:"); } } @Override publicvoidonError(Throwablethrowable){ Log.i(TAG,"onError:--->"+throwable.getMessage()); } @Override publicvoidonComplete(){ Log.i(TAG,"onComplete:"); } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。