Retrofit 和RxJava已经出来很久了,从去年开始rxjava和retrofit就开始火,所以之前在做项目的时候也用了rxjava和retrofit,今天就介绍一下在项目中如何封装rxjava和retrofit。对于 RxJava 不是很了解的同学推荐你们看这篇文章给 Android 开发者的 RxJava 详解。Retrofit的使用可以看看Android Retrofit 2.0使用。
首先在我们的工程的build.gradle中添加依赖:
compile 'io.reactivex:rxjava:1.1.8'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
然后封装retrofit:
public class HttpMethods {
//接口根地址
public static final String BASE_URL = "http://www.baidu.com";
//设置超时时间
private static final long DEFAULT_TIMEOUT = 10_000L;
private Retrofit retrofit;
private OkHttpClient client;
private static class SingletonHolder {
private static final HttpMethods INSTANCE = new HttpMethods();
}
//私有化构造方法
private HttpMethods() {
client = new OkHttpClient.Builder()
.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
//添加请求头
//.addInterceptor(new HeaderInterceptor())
//添加日志打印拦截器
.addInterceptor(new LoggerInterceptor("===", true))
.build();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
//添加Gson解析
.addConverterFactory(GsonConverterFactory.create())
//添加rxjava
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
public static HttpMethods getInstance() {
return SingletonHolder.INSTANCE;
}
//这里返回一个泛型类,主要返回的是定义的接口类