Retrofit+OKhttp+RxJava框架的封装
来源:互联网 发布:单片机按键电路的作用 编辑:程序博客网 时间:2024/06/05 02:05
写在前面: 在封装框架时,我们通常会在数据请求框架上再封一层,以便当我们需要对网络框架进行修改时,只需在内部替换框架即可,对我们的App项目中的使用不影响
在封装框架时,我们通常会在数据请求框架上再封一层,以便当我们需要对网络框架进行修改时,只需在内部替换框架即可,对我们的App项目中的使用不影响
1. 最外层封装,在项目中可直接使用的工具类
public static Call<LoginBean> login(String userName, String password) {
HttpParams params = new HttpParams(); params.putHeaders("Referer", LOGIN_URL); params.putHeaders("User-Agent", USER_AGENT); params.put("from", LOGIN_URL); params.put("service", "client_transaction"); params.put("username", userName); params.put("password", password); return HttpTools.get(LOGIN_URL, LoginBean.class, false, params);}
public static Observable<PEArticle> getArticle(String articleId) {
HttpParams params = new HttpParams(); params.put("id", articleId); params.put("serviceId", "panda"); return ApiConnection.<PEArticle>createGet() .type(PEArticle.class) .url(ARTICLE_URL) .params(params) .requestCall().observable();}
2. 封装在内部的框架可被替换成其他的网络请求框架,比如retrofit ,Okhttp, RxVolley
public class HttpTools { public static <T> Call<T> get(String url, Class<T> type, boolean shouldCache, HttpParams params) { return ApiConnection.<T>createGet() .url(url) .params(params) .type(type) .shouldCache(shouldCache) .requestCall(); }3. 下面是从Retrofit中摘出来的一些类,修改部分代码实现自己的接口
4.最里层封装
public class ApiConnection { public static <T> Builder<T> createGet() { return new Builder<T>().method(Method.GET); } public static <T> Builder<T> createPost() { return new Builder<T>().method(Method.POST); } public static class Builder<T> { private String url; private HttpParams params; private boolean shouldCache = true; private int method = Method.GET; private Class<T> type; private int timeoutMs = Network.DEFAULT_TIME_OUT; public Builder() { } public Builder<T> url(String url) { this.url = url; return this; } Builder<T> method(int method) { this.method = method; return this; } public Builder<T> params(HttpParams params) { this.params = params; return this; } public Builder<T> shouldCache(boolean shouldCache) { this.shouldCache = shouldCache; return this; } public Builder<T> type(Class<T> type) { this.type = type; return this; }//使用Okhttp进行数据请求public Call<T> requestCall() {
build();
Call<T> okHttpCall = new OkHttpCall<>(this);
Call call = DaggerCallComponent.builder()
.applicationComponent(AppContext.getInstance().getApplicationComponent())
.callModule(new CallModule(okHttpCall)).build().call();
return call;
}5. Retrofit 转化Rxjava接口
public class RxJavaCallAdapter { public <R> Observable<R> toBody(Call<R> call) { Observable<R> observable = adapt(call) .lift(OperatorMapResponseToBodyOrError.<R>instance()); return observable; } public <R> Observable<Response<R>> adapt(Call<R> call) { Observable<Response<R>> observable = Observable.create(new CallOnSubscribe<>(call)); return observable; }
0 0
- Retrofit+OKhttp+RxJava框架的封装
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- 封装Retrofit + okhttp + rxjava网络请求框架
- 封装RxJava+Retrofit+OkHttp
- RxJava+okhttp+Retrofit+Mvp 的封装
- 如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
- Rxjava+ReTrofit+okHttp深入浅出-终极封装
- RxJava+Retrofit+OkHttp 深入浅出-终极封装一
- 终极封装 Rxjava+Retrofit+okhttp+mvp实现
- RxJava + Retrofit + OKHttp + RxLifecycle进一步封装网络
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
- 打造属于自己的网络请求框架(OKHttp+Retrofit+RxJava)
- Retrofit+Rxjava的封装
- Retrofit+Rxjava网络封装框架
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- android 网络框架学习(okhttp,retrofit,rxjava)
- Retrofit对OKhttp的封装
- No resource found that matches the given name 'Theme.AppCompat.Light'
- es6 中的箭头符号
- js Date.parse格式不同小计
- Lodash 中 assign,extend 和 merge 的区别
- 机器学习常见算法概述
- Retrofit+OKhttp+RxJava框架的封装
- Android APP反编译
- MyBatis Generator自动创建SSM框架mapping pojo dao包下的代码详解
- logstash 根据type 判断输出
- 20160822,新的团队,新的起点,自力更生
- Decorator模式(装饰模式 结构型)
- 【挖坑记】JZOJ 4722 跳楼机
- mysql分别对分一组的数据进行更新
- [二维树状数组] codeforces 707E. Garlands