Retorfit+RxJava的联合使用
来源:互联网 发布:suse linux 网关配置 编辑:程序博客网 时间:2024/05/21 09:24
有关Retofit 的知识请看http://blog.csdn.net/outofthinair/article/details/71663349有关RxJava 的知识请看http://blog.csdn.net/outofthinair/article/details/71703027
当我们对这两者有了一个认识之后,我们来看一下它们的结合使用
在使用之前我们要添加依赖
标准的retrofit2 依赖
compile ‘com.squareup.retrofit2:retrofit:2.0.1’
支持Gson retrofit2 依赖
compile ‘com.squareup.retrofit2:converter-gson:2.0.1’
支持RxJava retrofit2 依赖
compile ‘com.squareup.retrofit2:adapter-rxjava:2.0.1’
RxAndroid 的依赖,主要提供主线程
compile ‘io.reactivex:rxandroid:1.1.0’
OkHttp 的拦截器
compile ‘com.squareup.okhttp3:logging-interceptor:3.4.1’
上面的依赖要添加
支持Gson retrofit2 依赖(自动解析Json )
compile ‘com.squareup.retrofit2:converter-gson:2.0.1’
支持RxJava retrofit2 依赖
compile ‘com.squareup.retrofit2:adapter-rxjava:2.0.1’
RxAndroid 的依赖,主要提供主线程
compile ‘io.reactivex:rxandroid:1.1.0’
OkHttp 的拦截器()
compile ‘com.squareup.okhttp3:logging-interceptor:3.4.1’
//上面的依赖选择性加入
一般都要支持RxJava
和Gsonn
//下面以Post请求为例
**1.1.定义一个接口(封装URL地址和数据请求)
这里和单独使用Retorfit 有一定的不同 看代码**
/**
* Use:数据的请求接口
* Author:陈懿鹏
* Data:2017/5/23.
*/
public interface DataRequestApi {
/** *FirstHand 首次握手 * @param type app类型 为ANDROID * @param dev_id 设备标识 * @param ver_code 版本号 * @param tick 时间戳 * @param sign 签名 * @return */@POST(UrlConnect.FRIST_HAND)@FormUrlEncoded
//不同点 这里返回的不再是Call对象了,而是一个被观察者对象
//里面的泛型就是我们想要的数据封装Bean
Observable firstHand(@Field(“type”)String type,@Field(“dev_id”)String dev_id,
@Field(“ver_code”)int ver_code,@Field(“tick”)String tick,
@Field(“sign”)String sign);
}
2.2.实例化Retrofit ,并返回 请求接口
/**
* 获得Retrofit 的请求接口
* @return
*/
public static DataRequestApi getDataRequestApi(String baseUrl){ //日志拦截器打印日志 HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Override public void log(final String message) { //打印retrofit日志 Log.i("RetrofitLog", "retrofitBack = " + message); } }); //设置log的级别 loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); //将网络请求交给OkHttp OkHttpClient client = new OkHttpClient.Builder().addInterceptor(loggingInterceptor).build(); //实例化Retrofit2 Retrofit retrofit =new Retrofit.Builder() .client(client) .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //调用请求接口 return retrofit.create(DataRequestApi.class);}
3.调用 开始请求
@Override
public void first_hand(final Context context, final SharedPreferences preferences, String type, String dev_id, int ver_code, String tick) {
//生成签名
StringBuffer sb = new StringBuffer();
sb.append(UrlConnect.PUBLIC_KEY)
.append(type)
.append(dev_id)
.append(ver_code)
.append(tick);
//Md5加密
String sign_ = ModelUtils.md5(sb.toString());
String sign=sign_.toUpperCase();
Log.d("sign",sign); //获得调用接口 DataRequestApi dataRequestApi = ModelUtils.getDataRequestApi(UrlConnect.BESE_URL); //请求网络 final Observable<FirstHandBean> firstHand = dataRequestApi.firstHand(type, dev_id, ver_code, tick, sign); //给被观察者设置线程 firstHand.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<FirstHandBean, FirstHandBean>() { @Override public FirstHandBean call(FirstHandBean firstHandBean) { return firstHandBean; } }) .subscribe(new Observer<FirstHandBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(FirstHandBean firstHandBean) { //这里就会得到数据回调 Log.d("onNext",firstHandBean.toString()); }); } });}
- Retorfit+RxJava的联合使用
- RxJava与retorfit联合使用
- Rxjava和retorfit的混合使用
- retorfit与Rxjava的权限
- Retrofit+RxJava的联合使用
- Retrofit+RxJava的联合使用
- retorfit+RxJava+OKhttp+MVP
- retorfit
- Okhttp+Retrofit+Rxjava+MVP联合使用
- rxJava的使用
- RxJava的使用
- RxJava 的使用入门
- RxJava 的使用入门
- RxJava的基本使用
- RxJava 的使用入门
- RxJava的使用
- RxJava+RxBus的使用
- RxJava的简单使用
- C++中通过派生类调用第二基类的普通成员函数时this指针的调整
- Struts2标签库和OGNL
- 好用的工具推荐——curl
- 中国大学慕课C语言第六讲笔记
- 浮点数
- Retorfit+RxJava的联合使用
- 匹配代价函数之ZNCC
- Oracle 11g物理Data Guard之Snapshot Standby数据库功能
- [转载] 使用8种方法实现竖直水平居中
- Java初解背包问题
- C# 父类与子类的简单使用
- 面向对象设计原则
- 设备与驱动的关系以及设备号、设备文件
- 数据结构---哈夫曼树