Skip to content

LuciusLyle/Net

Repository files navigation

简单的Retrofit 封装

implementation 'com.github.LuciusLyle:Net:0.0.8-alpha'

https://jitpack.io/private#subscribe(地址生成)

1: 初始化配置:HttpConfig

    HttpConfig config = new HttpConfig()
            .setBaseUrl("")// base url
            .setRetrofitConfiguration(new Interceptor() {
                  @Override
                  public Response intercept(Chain chain) throws IOException {
                      Request original = chain.request();
                      Request.Builder requestBuilder = original.newBuilder()
                          .addHeader("user-agent", "android")
                          .addHeader("content-type", "application/json;charset:utf-8")
                          .addHeader("language", BaseSP.getInstance().getString("language"))//语言类型
                          .addHeader("token", BaseSP.getInstance().getString("token"))
                          .header("device", "device")//设备信息
                          .header("version", "version")//app版本
                          .header("apiVersion", "apiVersion")//api版本
                          .header("channelId", "channelId")//渠道
                          Request request = requestBuilder.build();
                          return chain.proceed(request);
                  }
            })
             .setOkhttpConfiguration()//Customize Okhttp Config
    //初始化        
    BaseHttp.getInstance().init(config);
    
     //全局修改BaseRul
     BaseHttp.getInstance().setHost("");
    /**
     * 请求返回过滤
     */
    BaseHttp.getInstance().setRequestCallFilter(new RequestCallFilter() {
        @Override
        public void onNext(Object o) {
            if (o instanceof ResponseBody) {

            } else if (o instanceof HttpResult) {
                
            }
        }
    }); 

2: 缓存多模块ApiService

a:  RetrofitServiceManager(RetrofitService 管理)
    自定义ApiService,多模块多 ApiService
b:  获取Observable
    Observable observable = RetrofitServiceManager.getInstance().obtainRetrofitService(ApiService.class);//获取 RetrofitService
c:  获取Observer
    提供两种转换方式 1:Observable<ResponseBody>(返回JSONObject) 2:Observable<T>(返回泛型T)
    可以自定义HttpConfig 配置转换方式

3: 请求返回过滤(支持 ResponseBody 和 泛型 类)

        BaseHttp.getInstance().setRequestCallFilter(new RequestCallFilter() {
            @Override
            public void onNext(Object o) {
                if (o instanceof ResponseBody) {

                } else if (o instanceof HttpResult) {
                    
                }
            }
        });

4: 使用示例

        RetrofitHelper.qurest(Observable observable, RequestCallback callback);//rx线程管理,observable与自定义Observer类
        RetrofitHelper.qurest(RetrofitServiceManager.getInstance().obtainRetrofitService(UserService.class).executeGetEntity("path"),
                new RequestCallback<HttpResult<List<UserEntity>>>() {
                 @Override
                        public void onError(Throwable e) {
                            //super.onError(e);
                             Log.e("xxx","rx异常");
                        } 
                    @Override
                    public void onFailure(Throwable e, String msg) {
                        Log.e("xxx","异常解析错误分类:"+msg);
                    }
                    @Override
                    public void onResponse(HttpResult<List<UserEntity>> response) {
                        super.onResponse(response);
                        Log.e("xxx","实体:"+response.getData().get(0).getName());
                    }
                });

        RetrofitHelper.qurest(RetrofitServiceManager.getInstance().obtainRetrofitService(UserService.class).executeGet("home/content"),  
                new RequestCallback<ResponseBody>() {
            @Override
            public void onFailure(Throwable e, String msg) {
                Log.e("xxx","异常解析错误分类:"+msg);
            }
            @Override
            public void onResponse(JSONObject response) {
                Log.e("xxx","Gson::"+response.optString("message"));
            }
        });