//API的接口
//https://www.zhaoapi.cn/file/upload
//上传头像
public static String TOUXINAG_URL="https://www.zhaoapi.cn/";
//API请求的方式和所需要的参数
@Multipart
@POST("file/upload")
Observable<Uptou> settouxiang(@Part("uid")RequestBody uid,@Part MultipartBody.Part file);
//懒汉式单例模式和双重验证锁
//单例模式
private volatile static RetrofiUtil retrofiUtil;
private RetrofiUtil() {
}
//双重验证锁
public static RetrofiUtil getmInstance() {
if (retrofiUtil == null) {
synchronized (RetrofiUtil.class) {
if (retrofiUtil == null) {
retrofiUtil = new RetrofiUtil();
}
}
}
return retrofiUtil;
}
//Modle层的方法
@Override
//上传头像
public void seticon(File file, String uid, final Modle4 modle4) {
Retrofit retrofit = RetrofiUtil.getmInstance().getretrofit(Api.TOUXINAG_URL);
ApiSerice apiSerice = retrofit.create(ApiSerice.class);
RequestBody uidReques = RequestBody.create(MediaType.parse("multipart/form-data"), uid);
MultipartBody.Part file1 = MultipartBody.Part.createFormData("file", file.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file));
Observable<Uptou> settouxiang = apiSerice.settouxiang(uidReques, file1);
settouxiang.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Uptou>() {
@Override
public void accept(Uptou uptou) throws Exception {
modle4.geticon(uptou);
}
});
}
//Presenter层的方法
@Override
public void seticon(File file, final String uid, IModle iModle, final UserActivity userActivity) {
iModle.seticon(file, uid, new Modle4() {
@Override
public void geticon(Uptou uptou) {
userActivity.seticon(uptou);
}
});
}