Rrtrofit封装框架

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

你可能感兴趣的:(retrofit,泛型,rxjava)