Retrofit+RxJava

来源:互联网 发布:大卖家淘宝流量互刷 编辑:程序博客网 时间:2024/06/05 09:43
public interface ZhihuApi {    @GET("/api/4/news/latest")    Observable<ZhihuDaily> getLastDaily();    @GET("/api/4/news/before/{date}")    Observable<ZhihuDaily> getTheDaily(@Path("date") String date);    @GET("/api/4/news/{id}")    Observable<ZhihuStory> getZhihuStory(@Path("id") String id);    @GET("http://lab.zuimeia.com/wallpaper/category/1/?page_size=1")    Observable<ImageResponse> getImage();    @GET("http://caiyao.name/releases/MrUpdate.json")    Observable<UpdateItem> getUpdateInfo();}


请求封装

public class ZhihuRequest {    private static Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR=new Interceptor() {        @Override        public Response intercept(Chain chain) throws IOException {            if (NetWorkUtil.isNetWorkAvailable(MicroApplication.getContext())){                int maxAge = 60;                Response response=chain.proceed(chain.request());                return  response.newBuilder()                        .removeHeader("Pragma")                        .removeHeader("Cache-Control")                        .header("Cache-Control", "public, max-age=" + maxAge)                        .build();            }else{                int maxAge = 60*60*24*28;                Response response=chain.proceed(chain.request());                return  response.newBuilder()                        .removeHeader("Pragma")                        .removeHeader("Cache-Control")                        .header("Cache-Control", "public, max-age=" + maxAge)                        .build();            }        }    };    public  static File cacheFile=new File(MicroApplication.getContext().getCacheDir(),"zhihuCache");    private static int cacheSize = 10 * 1024 * 1024;    public  static Cache cache=new Cache(cacheFile,cacheSize);    public  static OkHttpClient client=new  OkHttpClient.Builder()            .addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)            .addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)            .cache(cache).build();    private static ZhihuApi zhihuApi = null;    public  static  ZhihuApi getZhihuApi(){        synchronized (ZhihuApi.class){            if (zhihuApi==null){                zhihuApi= new Retrofit.Builder()                        .baseUrl("http://news-at.zhihu.com")                        .addCallAdapterFactory( RxJavaCallAdapterFactory.create())                        .client(client)                        .addConverterFactory(GsonConverterFactory.create())                        .build().create(ZhihuApi.class);            }        }        return  zhihuApi;    }}


调用

ZhihuRequest.getZhihuApi().getImage().subscribeOn(Schedulers.io())                .map(new Func1<ImageResponse, Boolean>() {                    @Override                    public Boolean call(ImageResponse imageResponse) {                                                return  true;                    }                }).observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<Boolean>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                                            }                    @Override                    public void onNext(Boolean aBoolean) {                                           }                });




1 0