rxjava+retrofit+okhttp
2018-01-17 19:52
351 查看
写一个接口等待实现,接口里面是请求方式
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); }
创建一个RetrofitManager
public class RetrofitManager { public static OkHttpClient client = new OkHttpClient.Builder() .build(); public static ApiService apiService = new Retrofit.Builder() .baseUrl("http://120.27.23.105/") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(ScalarsConverterFactory.create()) .client(cl 4000 ient) .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); } }写一个类继承Observer里面实现方法
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); }
相关文章推荐
- Retrofit、RxJava和OkHttp使用
- 封装retrofit+okhttp+rxjava
- MVP+Retrofit+RxJava+Okhttp构造一个合格的Android框架
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp实战
- Android Http 标准框架,底层 OkHttp,与 RxJava 完美结合,比 Retrofit 更简单易用。
- Rxjava+ReTrofit+okHttp深入浅出-终极封装三(文件上传)
- Retrofit、RxJava和OkHttp使用
- Android MVP架构(RxJava+SQLBrite+Retrofit+OkHttp+Glide)
- RxJava+Retrofit+OkHttp深入浅出-终极封装三(文件上传)
- Android RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp 懒人方式使用一
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- retrofit+mvp+okhttp+rxjava封装
- Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- RxJava+Retrofit+OkHttp深入浅出-终极封装五(数据持久化)
- RxJava2+Retrofit2+OkHttp3实现网络缓存
- OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比Retrofit更简单易用
- Retrofit+Rxjava+OkHttp