Retrofit是网络请求的一个库,是在okhttp上面有包装了一层,封装了数据转换,get,post等等。我觉得最主要是封装了数据转换吧,什么json数据转换什么的。
大概说个例子吧,下面例子是通过get方法获取我的github账户的所有仓库。
建立数据处理类型
估计是服务器的数据最后都转变成下面这个java类型吧,便于java处理
package com.wenfengtou.retrofitdemo;
/**
* Created by wenfeng on 2017-04-12.
*/
public class RepositoryBean {
String full_name;
String html_url;
int contributions;
@Override
public String toString() {
return full_name + " (" + contributions + ")";
}
}
访问服务器
GitHubService是一个接口,据说可以被Retrofit转化成一个类,然后就能调用里面的方法queryUserRepos了,这个方法就是通过get的方式获取数据,返回一个RepositoryBean的数据。
package com.wenfengtou.retrofitdemo;
/**
* Created by wenfeng on 2017-04-12.
*/
import java.util.List;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.Path;
import java.util.List;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.Path;
public interface GitHubService {
@GET("users/{users}/repos")
Call<List<RepositoryBean>> queryUserRepos(
@Path("users") String users);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
main函数调用
首先通过retrofit.create获取到gitHubService 服务,然后调用这个服务的方法就ok啦。
GitHubService gitHubService = retrofit.create(GitHubService.class);
Call<List<RepositoryBean>> call = gitHubService.queryUserRepos("wenfengtou");
例子传送门
https://github.com/wenfengtou/RetrofitDemo
参考:
Retrofit