1.接口方法
public interface GitHubService {
@GET("/users/{user}/repos")
Call> reposForUser(@Path("user") String user);
}
- 返回的数据类型
public class GitHubRepo {
private int id;
private String name;
public GitHubRepo() {
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
- 调用
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(API_base_URL)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.client(httpClient.build()).build();
GitHubService service = retrofit.create(GitHubService.class);
final Call> call = service.reposForUser("octocat");
call.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
List list = response.body();
for (GitHubRepo gitHubRepo : list) {
Log.e("test", gitHubRepo.getName());
}
}
@Override
public void onFailure(Call> call, Throwable t) {
}
});
理解
Retrofit是什么?
是一个辅助用户进行网络请求的框架,主要帮助用户通过接口方法定义以及注解的方式自动构造请求,
并在网络请求后将结果json转化为用户需要的数据结构类型.
内部会使用okHttp进行具体的网络请求.
Retrofit如何做到的?
主要是通过动态代理的方式,通过构造的代理类中InvocationHandler的invoke方法,将对接口的调用转化为一次http请求.使用okHttp进行网络请求后,
解析resonse并转化成需要的结果类型返回.
- Retrofit — Getting Started and Creating an Android Client
https://futurestud.io/tutorials/retrofit-getting-started-and-android-client拆轮子系列:拆 Retrofit
https://blog.piasy.com/2016/06/25/Understand-Retrofit/index.html公共技术点之 Java 动态代理
https://a.codekk.com/detail/Android/Caij/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20Java%20%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86Retrofit分析-漂亮的解耦套路
https://www.jianshu.com/p/45cb536be2f4如何进行网络框架的学习和设计
https://www.infoq.cn/article/27hrz4qgcnxhuk7naume



