最近学习了一种现在非常火的请求网络的方式retrofit2.0,使用起来也是非常的简单它与rxjava的结合也会让你的请求更加的简单,下面上代码,简单的演示一下.
具体的使用
1.首先在自己的工程中导入一下依赖,依赖千万别倒错了,不然就会出现问题.!!
compile 'com.squareup.retrofit2:retrofit:2.0.2'
// Retrofit库
compile 'com.squareup.okhttp3:okhttp:3.1.2'
// Okhttp库
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
2.在配置文件中添加权限
<uses-permission android:name="android.permission.INTERNET"/>
3.接下来就该看看代码的实现了.
首先新建一个接口的类
public interface MyApi {
//这是请求数据网址的后半部分,前一部分在实例 Retrofit的时候会出现
@GET("a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=20&gender=2&ts=1871746850&")
//正常网络请求返回类型用Call就可以了,但是我们是和Rxjava结合一起使用,所以使用被观察者对象
Observable<News> getCall(@Query("page") int page);
//接下来实例化Retrofit,这个可以在此类中实现也可以写在MainActivity中
Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://www.yulin520.com/")//网址的前部分,这里的url与请求的url拼接成一个完整的URL
.addConverterFactory(GsonConverterFactory.create())//使用Gson进行解析
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava,在使用RxJava时必须要加这句话
.build();
MyApi utils=retrofit.create(MyApi.class);
}
然后再新建一个MainActivity,实现如下代码
MyApi.utils.getCall(page).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<News>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(News news) {
Log.i("111111", "onNext: "+news.toString());
}
});
这样Retrofit和Rxjava就完美的结合使用了.
有哪里不懂可以评论下,看到时会进行解答,请大家多多支持,谢谢大家.
想要深入了解的给大家推荐一篇博客:https://juejin.im/entry/596808f2f265da6c386d0d77