您的位置:首页 > 理论基础 > 计算机网络

Retrofit+RxJava+RxAndroid+Gson快速构建网络框架

2017-08-19 17:29 531 查看
1.首先build.gradle文件中引用依赖库

compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'io.reactivex:rxandroid:1.2.1'

2.通过Builder模式创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
//通过Gson 解析实体
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
3.定义或者通过GsonFormat插件把Json字符串生成实体类(本例中的实体类Repo)
4.定义接口
/**
* 定义接口
*/
public interface GitHubService {
@GET("users/{user}/repos")
Observable<List<Repo>> listRepos(@Path("user") String user);
}


5.创建接口实例,调用接口并通过观察者模式获取数据
GitHubService service = retrofit.create(GitHubService.class);
service.listRepos("dz-hexiang")               //在IO线程进行网络请求
.subscribeOn(Schedulers.newThread())//请求在新的线程中执行
.observeOn(AndroidSchedulers.mainThread())         //请求完成后在主线程线程中执行,如更新ui
.doOnNext(new Action1<List<Repo>>() {
@Override
public void call(List<Repo> repos) {
Log.w("retrofit","获取到的数据");
/**
* 异步耗时处理数据
*/

}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<Repo>>() {
@Override
public void onCompleted() {
Log.w("retrofit","onCompleted");
}

@Override
public void onError(Throwable e) {
Log.w("retrofit","onError");
}

@Override
public void onNext(List<Repo> repos) {
/**
* 主线程中把得到的数据更新UI界面
*/
// mTextMessage.setText(new Gson().toJson(repos));
}
});



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息