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上传文件功能”这一关键问题有了从实践层面最深刻的体会,具体使用情况还需要大家自己动手实践使用过才能领会,如果想阅读更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
android(如何快速开发框架 小米note开发版MIUI,安卓6.0,怎么安装Xposed框架)
稳定版,你必须先根除。你上网搜索安卓可以叫别人s框架,对方可以把框架做成jar包,把这个jar包加载到项目目录的libs文件中使...
-
android(studio 虚拟机启动不了 android studio可以当模拟器用吗)
androidstudio可以当模拟器用吗?AmdCUP引导模拟器有点复杂。雷电模拟器上的抖音怎么登录不上?不是,闪电模拟调用...
-
从实践中学习手机抓包与数据分析(android 手机抓包app)
android手机抓包app?netcapture抓包精灵app(手机抓包工具)又名sslcapture,是什么专业的安卓手机抓...
-
android(studio全局搜索 android studio怎么看app界面)
androidstudio怎么看app界面?在设备桌面点击运用直接进入到App界面,就也可以参与其他你的操作了。android-...
-
怎么把android框架源代码拉到本地(android studio如何运行别人的源代码)
androidstudio如何运行别人的源代码?androidstudio点击刚建在列表中你选择导入module,导入即可在用...
-
android(studio2022年使用教程 怎么安装Android studio详细教程)
怎么安装Androidstudio详细教程?androidstudio中haxm直接安装的方法追加:1、简单的方法打开Andr...
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能