使用RxJava2实现从本地图片上传到服务器最简单最实用的方法

网络请求框架很多,现在主流的就是用RxJava响应式编程,其实也是观察者模式的另外一种运用,但现在我们公司维护老项目使用的网络框架是apache的传递的参数是一个一个键值对的形式作为参数传递,由于过于老旧,有可能这种传递数据到后台就会出现某些参数丢失的情况,还好之前学过Rxjava2+Okhttp3+Retrofit2 这个里呢就不对Rxjava做过多的讲述 ,在网络上也有很多的关于Rxjava的介绍,这里主要是针对Rxjava从本地上传图片到服务端的讲解。

在做这个功能的时候也查过很多的资料 ,讲解的内容也五花八门,有些过于赘述,但使用性不是很好,有可能你花大量的时间,结果发现关键代码只需要4-5行就可以了

1.首先配置Rxjava的网络请求,配置好过后创建一个接口 RequestApi

2.上关键的代码

没错关键的代码就这四行 ,对于一般的图片上传这四行代码足够,不需要过多的代码赘述,这样一个图片上传的功能就算做完了

/* 上传文件至Server的方法*/

public void uploadFile(String filePath, OnResponseResult responseResult) {

this.responseResult = responseResult;

    File file =new File(filePath);

    RequestBody requestBody  = RequestBody.create(MediaType.parse("image/jpg"),file);

    MultipartBody.Part body = MultipartBody.Part.createFormData("picture",file.getName(),requestBody);

    BlueTownRequest blueTownRequest = ApiService.createService(BlueTownRequest.class);

    blueTownRequest.uploadPhoto(body)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Consumer() {

@Override

                public void accept(UploadPhotoBean uploadPhotoBean)throws Exception {

if (uploadPhotoBean.rep_code.equals(Constant.HTTP_SUCCESS) && uploadPhotoBean.result!=null){

responseResult.success(uploadPhotoBean.result);

                    }else{

responseResult.failed(uploadPhotoBean.rep_msg);

                    }

}

}, new Consumer() {

@Override

                public void accept(Throwable throwable)throws Exception {

responseResult.failed(throwable.getMessage().toString());

                }

});

}


你可能感兴趣的:(使用RxJava2实现从本地图片上传到服务器最简单最实用的方法)