本文将为大家详细介绍“Android如何使用Retrofit上传文件功能”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Android如何使用Retrofit上传文件功能”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。
具体内容如下
public class RetrofitManager {
private static RetrofitManager retrofitManager;
private Retrofit retrofit;
private RetrofitManager() {}
public static RetrofitManager getInstance() {
if (retrofitManager == null) {
synchronized (RetrofitManager.class) {
if (retrofitManager == null) {
retrofitManager = new RetrofitManager();
}
}
}
return retrofitManager;
}
public Retrofit getRetrofit() {
if (retrofit == null) {
// 添加日志拦截器
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
// 拦截等级为body(可以打印出完整的网络请求)
httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
// 使用OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(1,TimeUnit.MINUTES)
.build();
// 创建出Retrofit
retrofit = new Retrofit.Builder()
// 使用Gson转换工厂
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// 基础Url
.baseUrl("http://**.**.**.**:**/")
.client(okHttpClient)
.build();
}
return retrofit;
}
}
1.在Api接口中声明方法
@Multipart
@POST("fileUpload")
Observable<String> upload(@Part List<MultipartBody.Part> parts);
2.实例化api接口
// 实例化api接口
Api api = RetrofitManager.getInstance().getRetrofit().create(Api.class);
3.构建参数
File file = new File("/sdcard/DCIM/Camera/**.jpg");
RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody multipartBody = new MultipartBody.Builder()
.addFormDataPart("file", "fileName.jpg", body)
.setType(MultipartBody.FORM)
.build();
4.提交请求
api.upload(parts)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<String>() {
@Override
public void onNext(String s) {
Log.i("--",s); // 请求结果
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
1.在Api接口中声明方法
@Multipart
@POST("fileUploadMore")
Observable<String> uploadMore(@PartMap Map<String, List<MultipartBody.Part>> multiMap);
2.实例化api接口
// 实例化api接口
Api api = RetrofitManager.getInstance().getRetrofit().create(Api.class);
3.构建参数
File file = new File("/sdcard/DCIM/Camera/**.jpg");
RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody multipartBody1 = new MultipartBody.Builder()
.addFormDataPart("file", "fileName1.jpg", body)
.setType(MultipartBody.FORM)
.build();
MultipartBody multipartBody2 = new MultipartBody.Builder()
.addFormDataPart("file", "fileName2.jpg", body)
.setType(MultipartBody.FORM)
.build();
MultipartBody multipartBody3 = new MultipartBody.Builder()
.addFormDataPart("file", "fileName3.jpg", body)
.setType(MultipartBody.FORM)
.build();
MultipartBody multipartBody4 = new MultipartBody.Builder()
.addFormDataPart("file", "fileName4.jpg", body)
.setType(MultipartBody.FORM)
.build();
// 把所有文件放入map集合中
Map<String, List<MultipartBody.Part>> parts = new HashMap<>();
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(new Observer<String>() {
@Override
public void onNext(String s) {
Log.i("--",s); // 请求结果
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
如果你能读到这里,小编希望你对“Android如何使用Retrofit上传文件功能”这一关键问题有了从实践层面最深刻的体会,具体使用情况还需要大家自己动手实践使用过才能领会,如果想阅读更多相关内容的文章,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。