依赖
//Gson
implementation 'com.google.code.gson:gson:2.4'
//okhttp
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
//日志拦截器
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//配置retrofit2.0
implementation 'com.squareup.retrofit2:retrofit:+'
//ConverterFactory的Gson依赖包
implementation "com.squareup.retrofit2:converter-gson:2.3.0"
//Rxjava2需要依赖
implementation 'io.reactivex.rxjava2:rxjava:+'
implementation 'io.reactivex.rxjava2:rxandroid:+'
//让retrofit支持Rxjava2
implementation 'com.squareup.retrofit2:adapter-rxjava2:+'
权限
<uses-permission android:name="android.permission.INTERNET" />
存放接口的类
public class ApiConstant {
public static final Integer SUCCEDCODE = 20000;
public static final String BASE_URL = "https://www.zhaobanzhilian.com/api/";//通用前缀
}
api
@GET
Observable<ResponseBody> get(@Url String url);
@FormUrlEncoded
@POST
Observable<ResponseBody> post(@Url String url, @FieldMap Map<String, Object> map);
@PUT
Observable<ResponseBody> put(@Url String url, @QueryMap Map<String, String> map);
@DELETE
Observable<ResponseBody> delete(@Url String url);
@POST
Observable<ResponseBody> Image(@Url String url, @Body MultipartBody body);
callback
public interface CallBack<T> {
void success(T data);
void error(T error);
}
model
public interface Model<T> {
void onGetSetData(String url, Class clas, CallBack callBack);
void onPostSetDataBody(String url,Map<String, Object> body, Class clas, CallBack callBack);
void onDeleteSetData(String url, Class clas, CallBack callBack);
void onPutSetData(String url, Map<String, String> map, Class clas, CallBack callBack);
void imgList(String url,List<Object> list, Class clas, CallBack callBack);
void imgPath(String url,String path, Class clas, CallBack callBack);
}
ModelImpl
public class ModelImpl implements Model {
@Override
public void onGetSetData(String url, final Class clas, final CallBack callBack) {
RetrofitManager.getInstence().get(url, new RetrofitManager.HttpListener() {
@Override
public void onSuccess(String data) {
Object o = new Gson().fromJson(data, clas);
callBack.success(o);
}
@Override
public void onFail(String error) {
callBack.error(error);
}
});
}
@Override
public void onDeleteSetData(String url, final Class clas, final CallBack callBack) {
RetrofitManager.getInstence().delete(url, new RetrofitManager.HttpListener() {
@Override
public void onSuccess(String data) {
Object o = new Gson().fromJson(data, clas);
callBack.success(o);
}
@Override
public void onFail(String error) {
callBack.error(error);
}
});
}
@Override
public void imgList(String url, List list, Class clas, CallBack callBack) {
RetrofitManager.getInstence(