Android如何使用Retrofit上传文件功能

Android如何使用Retrofit上传文件功能

本文将为大家详细介绍“Android如何使用Retrofit上传文件功能”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Android如何使用Retrofit上传文件功能”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。

具体内容如下

Android如何使用Retrofit上传文件功能

一、封装RetrofitManager

publicclassRetrofitManager{privatestaticRetrofitManagerretrofitManager;privateRetrofitretrofit;privateRetrofitManager(){}publicstaticRetrofitManagergetInstance(){if(retrofitManager==null){synchronized(RetrofitManager.class){if(retrofitManager==null){retrofitManager=newRetrofitManager();}}}returnretrofitManager;}publicRetrofitgetRetrofit(){if(retrofit==null){//添加日志拦截器HttpLoggingInterceptorhttpLoggingInterceptor=newHttpLoggingInterceptor();//拦截等级为body(可以打印出完整的网络请求)httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);//使用OkHttpClientOkHttpClientokHttpClient=newOkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).connectTimeout(1,TimeUnit.MINUTES).readTimeout(1,TimeUnit.MINUTES).build();//创建出Retrofitretrofit=newRetrofit.Builder()//使用Gson转换工厂.addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create())//基础Url.baseUrl("http://**.**.**.**:**/").client(okHttpClient).build();}returnretrofit;}}

二、上传单一文件

1.在Api接口中声明方法

@Multipart@POST("fileUpload")Observable<String>upload(@PartList<MultipartBody.Part>parts);

2.实例化api接口

//实例化api接口Apiapi=RetrofitManager.getInstance().getRetrofit().create(Api.class);

3.构建参数

Filefile=newFile("/sdcard/DCIM/Camera/**.jpg");RequestBodybody=RequestBody.create(MediaType.parse("multipart/form-data"),file);MultipartBodymultipartBody=newMultipartBody.Builder().addFormDataPart("file","fileName.jpg",body).setType(MultipartBody.FORM).build();

4.提交请求

api.upload(parts).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(newObserver<String>(){@OverridepublicvoidonNext(Strings){Log.i("--",s);//请求结果}@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonComplete(){}});

三、上传多个文件

1.在Api接口中声明方法

@Multipart@POST("fileUploadMore")Observable<String>uploadMore(@PartMapMap<String,List<MultipartBody.Part>>multiMap);

2.实例化api接口

//实例化api接口Apiapi=RetrofitManager.getInstance().getRetrofit().create(Api.class);

3.构建参数

Filefile=newFile("/sdcard/DCIM/Camera/**.jpg");RequestBodybody=RequestBody.create(MediaType.parse("multipart/form-data"),file);MultipartBodymultipartBody1=newMultipartBody.Builder().addFormDataPart("file","fileName1.jpg",body).setType(MultipartBody.FORM).build();MultipartBodymultipartBody2=newMultipartBody.Builder().addFormDataPart("file","fileName2.jpg",body).setType(MultipartBody.FORM).build();MultipartBodymultipartBody3=newMultipartBody.Builder().addFormDataPart("file","fileName3.jpg",body).setType(MultipartBody.FORM).build();MultipartBodymultipartBody4=newMultipartBody.Builder().addFormDataPart("file","fileName4.jpg",body).setType(MultipartBody.FORM).build();//把所有文件放入map集合中Map<String,List<MultipartBody.Part>>parts=newHashMap<>();parts.put("f1",multipartBody1.parts());parts.put("f2",multipartBody2.parts());parts.put("f3",multipartBody3.parts());parts.put("f4",multipartBody4.parts());

4.提交请求

api.uploadMore(parts).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(newObserver<String>(){@OverridepublicvoidonNext(Strings){Log.i("--",s);//请求结果}@OverridepublicvoidonError(Throwablee){}@OverridepublicvoidonComplete(){}});

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

如果你能读到这里,小编希望你对“Android如何使用Retrofit上传文件功能”这一关键问题有了从实践层面最深刻的体会,具体使用情况还需要大家自己动手实践使用过才能领会,如果想阅读更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道!

发布于 2022-01-17 22:04:27
收藏
分享
海报
0 条评论
39
上一篇:spring Bean创建方法是什么 下一篇:Java变量声明和作用域是什么
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码