package com.mcxtzhang.rxjava2demo.retrofit;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.mcxtzhang.rxjava2demo.retrofit.model.douban.MovieService;
import com.mcxtzhang.rxjava2demo.retrofit.model.douban.bean.Base.HttpResult;
import com.mcxtzhang.rxjava2demo.retrofit.model.douban.bean.DouBanMovieBean;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* 介绍:
* 作者:zhangxutong
* 邮箱:mcxtzhang@163.com
* 主页:http://blog.csdn.net/zxt0601
* 时间: 2017/1/5.
*/
public class HttpUtil {
public static final String BASE_URL = "https://api.douban.com/v2/movie/";
private static final int DEFAULT_TIMEOUT = 5;
private Retrofit mRetrofit;
private MovieService mMovieService;
private HttpUtil() {
//手动创建一个OkHttpClient并设置超时时间
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
mRetrofit = new Retrofit.Builder()
.client(builder.build())
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
mMovieService = mRetrofit.create(MovieService.class);
}
private static class HttpUtilInner {
private static final HttpUtil INSTANCE = new HttpUtil();
}
public static HttpUtil getInstance() {
return HttpUtilInner.INSTANCE;
}
//暴漏的接口
public Single<HttpResult<List<DouBanMovieBean>>> getDoubanTopMovie(int start, int count) {
return mMovieService.getDoubanTopMovie(start, count)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}