这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
本篇文章主要介绍了Android使用 Retrofit 2.X 上传多文件和多表单示例,具有一定的参考价值,有兴趣的小伙伴一起来了解一下
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.phperz.com/article/17/0913/345651.html