基本配置
//Retrofit
compile 'com.squareup.retrofit2:retrofit:2.3.0'//retrofit依赖
//compile 'com.squareup.retrofit2:converter-scalars:2.1.0 '//场景是这样,服务端返回一个不定类型的json数据,无法确定映射的Gson对象。
compile 'com.squareup.retrofit2:converter-gson:2.1.0'//retrofit内部封装的GSON
//compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'//log
1.Ritrofit工具类
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitUtils {
private static volatile RetrofitUtils instance;
private final Retrofit build;
private RetrofitUtils(String baseUrl){
build = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(baseUrl)
.build();
}
public static RetrofitUtils getInstance(String baseUrl){
if(instance==null){
synchronized (RetrofitUtils.class) {
if (instance == null) {
instance=new RetrofitUtils(baseUrl);
}
}
}
return instance;
}
public Retrofit getBuild(){
return build;
}
public <T> T getCreate(Class<T> cls){
return build.create(cls);
}
}
接口
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import retrofit2.http.Query;
public interface IServiceApi {
@GET("user/login")
Call<MessageBean<Login>> login(@Query("mobile") String mobile, @Query("password") String password);
@GET("api/data/Android/{num}/{page}")
Call<MessageBean> getResults(@Path("num")String num, @Path("page") String page);
}
//通过单例模式获取 代理对象
serviceApi = RetrofitUtils.getInstance("http://gank.io/").getCreate(IServiceApi.class);
Call<MessageBean> call = serviceApi.getResults("10", "1");
call.enqueue(new Callback<MessageBean>() {
@Override
public void onResponse(Call<MessageBean> call, Response<MessageBean> response) {
List<ResultsBean> results = response.body().getResults();
for (ResultsBean r:results) {
dao.insert(r);
}
list.addAll(getDataFromDB());
adapterRv.notifyDataSetChanged();
}
@Override
public void onFailure(Call<MessageBean> call, Throwable t) {
}
});