1、Retrofit是什么?
A type-safe HTTP client for Android and Java
Retrofit是一个类似Google Volley的对OkHtto进行过封装的网络框架,使用起来非常的简单。Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了。
2、Retrofit如何使用?
1)添加Gradle依赖:
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
2)定义接口以及网络方法:
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
3)实现接口和方法:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
4)利用接口的实现类生成的对象调用网络方法,获取数据:
Call<List<Repo>> call= service.listRepos("octocat");
call.enqueue(new Callback<List<Repo>>() {
@Override
public void onResponse(Response<List<Repo>> response) {
// 数据
}
@Override
public void onFailure(Throwable t) {
// 异常
}
});
提示:
Retrofit的网络访问支持同步和异步以及取消:
同步调用:call.execute();
异步调用:call.enqueue();
取消调用:call.cancel()。
3、Retrofit日志查看?
public class AppClient {
private static final int DEFAULT_TIMEOUT = 10;
private static Retrofit mRetrofit;
public static Retrofit getInstance() {
if (mRetrofit == null) {
mRetrofit = new Retrofit.Builder()
.baseUrl("http://www.weather.com.cn/")
.client(getClient())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return mRetrofit;
}
/**
* 自定义OkHttpClient:添加日志打印功能(可以在测试版本中开启、在正式版本中关闭)
*
* @return
*/
private static OkHttpClient getClient() {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
.build();
return okHttpClient;
}
}