1.添加方法:
allprojects{
repositroies{
....
maven { url 'https://jitpack.io' }
}
}
dependencies {
/*网络请求框架*/
implementation 'com.github.AgnoiY:RetrofitFrame:1.1.9'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
/*RxJava&RxAndroid*/
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
/*RxLifecycle基础库*/
implementation 'com.trello.rxlifecycle2:rxlifecycle:2.1.0' //可选
implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0' //可选
}
2.使用方法:
在Application中onCreate()中注册,onTerminate()中注销:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Map headerMap = new HashMap<>();
headerMap.put("v", "1.6.0");
headerMap.put("platform", "android");
headerMap.put("profiles", "prd");
RetrofitLibrary.getHttpConfigure()
.setBaseHeader(headerMap); // 网络请求基础配置类, 可选
RetrofitLibrary.init(this, "http:BaseUrl");
}
@Override
public void onTerminate() {
super.onTerminate();
RetrofitLibrary.onDestory();
}
}
调用方法:
RetrofitLibrary.getHttp()
.post() //请求方式
.apiUrl(url地址)
.addParameter(map) // 参数类型
.build()
.request(new HttpObserver<T(实体类)>(context, true, true) { //(Context, 是否加载弹窗, 点击返回键是否取消加载弹窗)多个重载方法
/**
* 上传进度回调
*
* @param action 标识(请求不设置,默认是apiUrl)
* @param value 返回结果
*/
@Override
public void onSuccess(String action, T value) {
}
});
3.实体基类:可以继承BaseResponseModel
public class BaseResponseModel {
/**
* 数据对象/成功返回对象
* 自定义字段:添加注解@Data
*/
@Data
private T data;
/**
* 状态码
* 自定义字段:添加注解@Code
* 状态码返回值(自定义值)value: 默认-200: 请求成功, 401: 登录Token过期
* 登录Token过期,login: 重新登录Activity
* loginTip: 重新登录提示语
* 或 RetrofitLibrary.getHttpConfigure()中配置重新登录
*/
@Code
private int code;
/**
* 描述信息
* 自定义字段:添加注解@Message
*/
@Message
private String msg;
/**
* 请求成功状态
* 自定义字段:添加注解@Success
*/
@Success
private boolean isSuccess = true; // 没有该字段无需关心
.....
}
使用方法:
public class Name extends BaseResponseModel {}
public class Name extends BaseResponseModel> {} //返回data数据是数组
自定义实体基类:
public class BaseModels {
/**
* 数据对象/成功返回对象
* 自定义字段:添加注解@Data
*/
@Data
private T data;
/**
* 状态码
* 自定义字段:添加注解@Code
*/
@Code(value = {0, -5}, login = LoginActivity.class, loginTip = "重新登录")
private int code;
/**
* 描述信息
* 自定义字段:添加注解@Message
*/
@Message
private String message;
...... // 其他字段无需注解
}
4.文件上传:
RetrofitLibrary.getHttp()
.apiUrl(url地址)
.addParameter(map) // 参数类型
.file(上传文件)
.build()
.upload(new UploadObserver(context, false){//(Context, 是否加载弹窗)、无参数构造器
@Override
public void onSuccess(String action, T value) {
}
/**
* 上传进度回调
*
* @param file 源文件
* @param currentSize 当前上传值
* @param totalSize 总大小
* @param progress 进度
* @param currentIndex 当前下标
* @param totalFile 总文件数
*/
public void onProgress(File file, long currentSize, long totalSize,
float progress, int currentIndex, int totalFile);
});
5.文件下载
源码地址:https://github.com/AgnoiY/RrtrofitFrame