网络框架之Retrofit + RxJava + OkHttp

 

Retrofit + RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库,让异步操作变得非常简单。

而OkHttp 的话是一款网络请求的框架,已经得到goole的认可。

Retrofit 使用接口的方式,负责请求的数据和请求的结果,OkHttp 负责请求的过程,RxJava 负责异步,各种线程之间的切换

retrofit 的引入

compile 'com.squareup.retrofit2:retrofit:2.1.0'//retrofit 
 compile 'com.google.code.gson:gson:2.6.2'//Gson 库 
//下面两个是RxJava 和RxAndroid 
compile 'io.reactivex:rxjava:1.1.0' 
compile 'io.reactivex:rxandroid:1.1.0'  
compile 'com.squareup.retrofit2:converter-gson:2.1.0'//转换器,请求结果转换成Model 
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//配合Rxjava 使用

 创建一个retrofit 实列

public static final String BASE_URL = "https://api.douban.com/v2/movie/";
Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create())
       .build();

创建一个接口 

public interface MovieService { 

 //获取豆瓣Top250 榜单 
 @GET("top250")
 Call<MovieSubject> getTop250(@Query("start") int start,@Query("count")int count);

}

用Retrofit 创建 接口实例 MoiveService,并且调用接口中的方法进行网络请求,代码如下:

//获取接口实例
MovieService MovieService movieService = retrofit.create(MovieService.class); 
//调用方法得到一个Call 
Call<MovieSubject> call = movieService.getTop250(0,20);
 //进行网络请求 
call.enqueue(new Callback<MovieSubject>() {
       @Override 
       public void onResponse(Call<MovieSubject> call, Response<MovieSubject> response) { 
            mMovieAdapter.setMovies(response.body().subjects);     
            mMovieAdapter.notifyDataSetChanged(); 
       } 
      @Override 
      public void onFailure(Call<MovieSubject> call, Throwable t) { 
         t.printStackTrace(); 
      } 
});

以上是异步方式请求,还有同步方式execute(),返回一个Response,代码如下:

Response<MovieSubject> response = call.execute();



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值