Retrofit+RxJava+RxAndroid+OkHttp简单封装
2018-01-17 19:53
501 查看
package com.example.muhanxi.myapplication.ketang; import com.google.gson.Gson; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.net.SocketException; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import retrofit2.HttpException; /** * Created by muhanxi on 18/1/11. */ public abstract class BaseObserver<T> implements Observer<String> { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(String s) { try { Type genType = getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); Class entityClass = (Class) params[0]; Gson gson = new Gson(); T t = (T)gson.fromJson(s,entityClass); success(t); } catch (Exception e) { failure(1001); e.printStackTrace(); } } @Override public void onError(Throwable e) { try { if(e != null){ if(e instanceof HttpException){ failure(HTTP_ERROR); } else if(e instanceof SocketException){ failure(NET_WORK_ERROR); }else { failure(UNKNOW_ERROR); } }else { failure(UNKNOW_ERROR); } e.printStackTrace() ; } catch (Exception e1) { failure(UNKNOW_ERROR); e1.printStackTrace(); } } @Override public void onComplete() { } // /** * code * 1000 UNKNOW_ERROR 未知错误 * 1001 json 转化异常 parse error * 1002 当前网络不可用 java.net.SocketException: Network is unreachable 超时 * 1003 服务器不可用 401 402 403 500 502 503 504 * @param code */ public static final int UNKNOW_ERROR = 1000; public static final int JSON_FORMAT_ERROR = 1001; public static final int NET_WORK_ERROR = 1002; public static final int HTTP_ERROR = 1003; public abstract void success(T t); public abstract void failure(int code); }GET、POST请求
package com.example.muhanxi.myapplication.ketang;
import com.example.muhanxi.myapplication.Bean;
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
/**
* Created by muhanxi on 18/1/11.
*/
public interface ApiService {
@GET
Observable<String> get(@Url String url ,@QueryMap Map<String,String> map);
@FormUrlEncoded
@POST
Observable<String> post(@Url String url, @FieldMap Map<String,String> map);
}
调用的类
package com.example.muhanxi.myapplication.ketang; import java.util.Map; import io.reactivex.Observer; import io.reactivex.Scheduler; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.scalars.ScalarsConverterFactory; /** * Created by muhanxi on 18/1/11. */ public class RetrofitManager { public static OkHttpClient client = new OkHttpClient.Builder() .build(); public static ApiService apiService = new Retrofit.Builder() .baseUrl("http://result.eolinker.com/") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(ScalarsConverterFactory.create()) .client(client) .build() .create(ApiService.class); public static void get(String url, Map<String,String> map,Observer observer){ apiService.get(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } public static void post(String url,Map<String,String> map,Observer observer){ apiService.post(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } }
相关文章推荐
- Android 简单封装 RxJava + Retrofit
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
- Android_封装Okhttp+Retrofit+RxJava,外加拦截器
- android 网络请求Retrofit+rxjava+okhttp 轻封装
- retrofit2.0+okhttp3+rxjava的封装(简单好用)
- Android Http 标准框架,底层 OkHttp,与 RxJava 完美结合,比 Retrofit 更简单易用。
- Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例
- Android--Retrofit+RxJava的简单封装(三)
- Android RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装三(文件上传)
- rxjava+retrofit+okhttp+mvp 简单实践
- Android Retrofit+RxJava+MVP封装
- Android Retrofit2+OkHttp3+RxJava 三联合
- Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)
- Android RxJava/RxAndroid结合Retrofit使用
- Android实战 RxJava2+Retrofit+RxBinding解锁各种新姿势
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Android OkHttp的简单使用和封装详解