浅谈RxJava+Retrofit+OkHttp 封装使用

网友投稿 394 2023-03-16


浅谈RxJava+Retrofit+OkHttp 封装使用

背景

之前学习完Retrofit+Rxjava之后写了一篇关于封装的博客,发出后受到大家的关注以及使用,由于不断的完善之前的项目,所以决定把最新的项目封装过程讲解出来,供大家查看!

Retrofit介绍:

Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(CallAdapter), 比方说RxJava,Java8, Guava。你可以使用不同的反序列化工具(Converter),比方说json, protobuff, xml, moshi等等。

官网 http://square.github.io/retrofit/

github https://github.com/square/retrofit

效果

懒人简单的使用方式

为什么称为懒人,因为你什么都不用做,直接按照一般案例写rx和retrofit的使用

引入需要的包

/*rx-android-java*/

compile 'io.reactivex:rxjava:+'

compile 'com.squareup.retrofit:adapter-rxjava:+'

compile 'com.trello:rxlifecycle:+'

compile 'com.trello:rxlifecycle-components:+'

/*rotrofit*/

compile 'com.squareup.retrofit2:retrofit:+'

compile 'com.squareup.retrofit2:converter-gson:+'

compile 'com.squareup.retrofit2:adapter-rxjava:+'

compile 'com.google.code.gson:gson:+'

创建一个service定义请求的接口

/**

* service统一接口数据

* Created by WZG on 2016/7/16.

*/

public interface HttpService {

@POST("AppFiftyToneGraph/videoLink")

Observable getAllVedioBy(@Body boolean once_no);

}

创建一个retrofit对象

//手动创建一个OkHttpClient并设置超时时间

okhttp3.OkHttpClient.Builder builder = new OkHttpClient.Builder();

builder.connectTimeout(5, TimeUnit.SECONDS);

Retrofit retrofit = new Retrofit.Builder()

.client(builder.build())

.addConverterFactory(GsonConverterFactory.create())

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

.baseUrl(HttpManager.BASE_URL)

.build();

http请求处理

// 加载框

final ProgressDialog pd = new ProgressDialog(this);

HttpService apiService = retrofit.create(HttpService.class);

Observable observable = apiService.getAllVedioBy(true);

observable.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())

.subscribe(

new Subscriber() {

@Override

public void onCompleted() {

if (pd != null && pd.isShowing()) {

pd.dismiss();

}

}

BfpVBE

@Override

public void onError(Throwable e) {

if (pd != null && pd.isShowing()) {

pd.dismiss();

}

}

@Override

public void onNext(RetrofitEntity retrofitEntity) {

tvMsg.setText("无封装:\n" + retrofitEntity.getData().toString());

}

@Override

publBfpVBEic void onStart() {

super.onStart();

pd.show();

}

}

);

源码:传送门-源码地址


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot 实现Restful webservice服务端示例代码
下一篇:接口文档和接口管理平台(接口文档范例)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~