初识Retrofit
最近工作不是很紧急,就在相关的网站查看一些有吸引力的文章,学习新的技术来充实自己,看到很多关于Retrofit的文章,出去好奇,自己百度了一下相关的内容,原来Retrofit是一个网络请求的框架,之前也用过不少的网络框架,最近使用okhttp,感觉还不错,现在这个Retrofit看文章很不错,自己就来学习一下。
Android开发中要使用的话需要添加依赖:(现在一般都是用的Retrofit2.0这个版本)
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'com.google.code.gson:gson:2.8.1'
Retrofit的基本使用也比较简单。
1.初始化实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
// .addCallAdapterFactory()
.build();
创建Retrofit实例时需要通过
Retrofit.Builder
,并调用
baseUrl
方法设置URL。
2.定义接口
public interface BlueService {
@GET("book/search")
Observable<BookEntity> getSearchBooks(@Query("q") String name,
@Query("tag") String tag, @Query("start") int start,
@Query("count") int count);
}
注意,这里是
interface
不是
class
,所以我们是无法直接调用该方法,我们需要用Retrofit创建一个
接口(blueservice)
的代理对象。
3.调用接口,创建对象
BlueService service = retrofit.create(BlueService.class); Observable<BookEntity> observable =service.getSearchBooks("小王子","",0,3); observable .subscribeOn(Schedulers.newThread()) .subscribe(new Observer<BookEntity>() { @Override public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { } @Override public void onNext(@io.reactivex.annotations.NonNull BookEntity bookEntity) { System.out.println("---------------"); System.out.println(bookEntity.toString()); System.out.println("---------------"); } @Override public void onError(@io.reactivex.annotations.NonNull Throwable e) { System.out.println("---------------"); System.out.println(e.toString()); System.out.println("---------------"); } @Override public void onComplete() { } });
这里是不是很简单,我在这个例子中也使用到了rxjava2.0 类,很多同学应该有所了解,不了解的可以看看rxjava2.0初识,这里介绍了相关的原理和使用。
学习retrofit也是看了不少的文章,对自己感觉帮助很大的文章推荐给大家----retrofit,刚刚了解retrofit,也只能给大家分享一点点的学习经验,后续学习更多相关的,会分享给大家。
参考文档: