retrofit&rxjava&gson请求成功后回调的统一处理
来源:互联网 发布:广州本科网络教育 编辑:程序博客网 时间:2024/05/17 04:57
假设网络请求接口后返还的json数据是以如下形式:
error==0
{ "error": 0, "msg": "suc", "data":{ "basename": "xxxx.name", "url": "http://img.xxx.com/xxxxxxxxxxx.jpg" }}
error==1
{ "error": 1, "msg": "xxxxx",}
error 和msg是一定返回的,data则是当error==0的时候才返回,当所有接口都采用这种形式的时候,为了避免每次请求都书写重复的判断,可以做一个简单的统一处理
HttpUtils.class
public class HttpUtils {public static HttpUtils mInstance;public Retrofit mRetrofit;private final Api apiService;private HttpUtils(){HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {@Overridepublic void log(String message) {Log.d("spinach", "OkHttp====message " + message);}});interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);OkHttpClient.Builder httpClient = new OkHttpClient.Builder();httpClient.addInterceptor(interceptor);httpClient.connectTimeout(10, TimeUnit.SECONDS);OkHttpClient client = httpClient.build();mRetrofit = new Retrofit.Builder().client(client).baseUrl(Constant.BASE_URL).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(ResponseConvertFactory.create()).build();apiService = mRetrofit.create(Api.class);}public static HRetrofitNetUtils getInstance(){if(mInstance==null){synchronized (HRetrofitNetUtils.class){if(mInstance==null)mInstance = new HRetrofitNetUtils ();}}return mInstance ;}public Api getApiService() {return apiService;}public void getXxxData(Subscriber<VersionData> subscriber, String y){Observable observable = apiService.getXxxData(y).map(new mFunc<xxxData>()).subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread();}private class mFunc<T> implements Func1<Response<T>, T> {@Overridepublic T call(Response<T> resultOb) {if (resultOb.getError().equals("1")) {//处理}else{return resultOb.getData();} } }}
Api.class
public interface Api {@GET("xxxx/xxx")Observable<Response<xxxData>> getXxxData(@Query("y") String y);}
Response.class
public class Response<T> {private String error;private String msg;private T data;public String getError() {return error;}public void setError(String error) {this.error = error;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}}
阅读全文
0 0
- retrofit&rxjava&gson请求成功后回调的统一处理
- RxJava结合Retrofit对网络请求结果的统一处理
- Retrofit+RxJava处理网络请求
- OkHttp Retrofit RxJava 统一错误处理
- Rxjava+Retrofit嵌套处理请求,并优雅的处理异常
- Rxjava观察者模式+Retrofit请求GSON数据+Fresco处理图片+Xrecyclerview展示数据+MVP模式
- MVP&Retrofit&Rxjava&Gson的简单例子
- RxJava+Retrofit+Gson实现网络请求
- Android RxJava+Retrofit网络异常、状态码统一处理
- 使用MVP+Retrofit+RxJava实现的的Android Demo (下)使用Retrofit+RxJava处理网络请求
- Rxjava +Retrofit 你需要掌握的几个技巧,Retrofit缓存,RxJava封装,统一对有无网络处理,异常处理, 返回结果问题
- Retrofit+Rxjava简单的网络请求
- Rxjava+Retrofit+Gson组合框架的使用(一)
- 使用OkHttp的addInterceptor功能实现RxAndroid+Retrofit请求结果的统一处理
- Rxjava+Retrofit 请求数据
- RXJava+Retrofit网络请求
- MVP +Retrofit +Rxjava 请求
- RxJava Retrofit2 网络请求,返回数据格式统一的数据报文处理方法
- UVa-10815-Andy's First Dictionary c++ STL set 基础练习题
- Qt Thread的挂起,亲测可用
- [YTU]_2617( B C++时间类的运算符重载)
- Oracle 学习之创世纪01如何学习oracle
- js加法
- retrofit&rxjava&gson请求成功后回调的统一处理
- 排名Top 16的Java实用类库
- Ajax等待界面美化和div永远屏幕居中显示
- 增加Tomcat连接数
- jar包、可执行jar包、classpath
- linux磁盘管理
- 导航栏添加子标题
- Android科大讯飞语音合成
- 函数及变量跨模块调用