天天在用,可你真的会用Retrofit吗?
Retrofit说起来相当简单,简单到源码只有37个文件,其中22个文件是注解,还都和HTTP有关,真正暴露给用户的类并不多。
Retrofit天天在用,那你会手写一个Retrofit请求吗?今天我们就从Retrofit开始,谈谈module架构实战。
一、创建Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:4567/")
.build();
创建Retrofit实例时需要通过Retrofit.Builder,并调用baseUrl方法设置URL。
二、接口定义
以获取指定id的Blog为例:
public interface BlogService {
@GET("blog/{id}")
Call<ResponseBody> getBlog(@Path("id") int id);
}
注意,这里是interface不是class,所以我们是无法直接调用该方法,我们需要用Retrofit创建一个BlogService的代理对象。
BlogService service = retrofit.create(BlogService.class);
拿到代理对象之后,就可以调用该方法啦。
三、接口调用
Call<ResponseBody> call = service.getBlog(2);
// 用法和OkHttp的call如出一辙,
// 不同的是如果是Android系统回调方法执行在主线程
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
打印结果:
{"code":200,"msg":"OK","data":{"id":2,"date":"2019-10-17 17:17:50","author":"二飞","title":"Retrofit2 测试2","content":"这里是 Retrofit2 Demo 测试服务器2"},"count":0,"page":0}
以上仅是Retrofit的入门,说到Retrofit就不得说到另一个火到不行的库RxJava。那你知不知道:
Retrofit, OkHttp和RxJava之间是什么关系?
Retrofit的引入到底解决了哪些问题?你能手写一个Retrofit的网络请求吗?
RxJava主要用来干什么?怎样将它加入到网络模块中?和Retrofit接口我们需要做哪些改变?
怎样让我们的网络模块支持完美支持多个域名?
多个环境我们该怎样支持?
Charles是什么?它的工作原理是什么?怎样运用它?
怎样保证网络的安全可靠?
这些问题你能答上来多少?
我们特邀了中国联通架构师Allen老师为我们带来——《Android网络架构设计手写实战》。两堂课的时间你就可以彻底理解Retrofit、OkHttp和Rxjava的原理和关系;一步一步见证一个支持多域名、多环境的安全可靠的网络模块的架构过程,从而让同学们明白脱离搬运工进阶架构师的紧迫感和重要性。
原价99元,公众号粉丝专享0.1元。
Allen老师:
国防科技大学计算机学院研究生,全球首批Android开发者;
专精领域:Android 、移动互联网开发、全栈开发的软件进入Google play的Top paid list。
发送“000”立即添加小姐姐报名吧
推荐阅读: