Retrofit2 基本使用参考
build.gradle 中添加依赖:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:+'
compile 'com.squareup.retrofit2:converter-gson:2+'
基于 Retrofit Api 封装
public class RetrofitManager {
private Retrofit retrofit;
private String host = "http://gank.io/api/";
private static final long TIMEOUT = 15L;
private void setRestAdapter() {
this.retrofit = (new Retrofit.Builder())
.baseUrl(host)
.client(createOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
private OkHttpClient createOkHttpClient() {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(TIMEOUT, TimeUnit.SECONDS)//设置超时时间
.readTimeout(TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(TIMEOUT, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)//设置出现错误进行重新连接。
.addInterceptor(httpLoggingInterceptor) //拦截器
.build();
return client;
}
public Retrofit returnRetrofit() {
return this.retrofit;
}
public RetrofitManager(){
this.setRestAdapter();
}
}
public class RetrofitAdapterManager extends RetrofitManager {
private static RetrofitAdapterManager retrofitAdapterManager;
private RetrofitAdapterManager (){
super();
}
public static RetrofitAdapterManager getInstance() {
if (null == retrofitAdapterManager) {
synchronized (RetrofitAdapterManager.class) {
if (null == retrofitAdapterManager) {
retrofitAdapterManager = new RetrofitAdapterManager();
}
}
}
return retrofitAdapterManager;
}
public static <T> T getRestApi(Class<T> apiInterface) {
return getInstance().returnRetrofit().create(apiInterface);
}
}
项目中使用
RetrofitAdapterManager.getRestApi(Api.class).getAll().enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});