/HttpUtil

retrofit封装库

Primary LanguageJava

停止维护 使用新库https://github.com/gengqiquan/FlowHttp

HttpUtil

retrofit封装库

发起请求

get请求

 new HttpBuilder("url")
                .params(map)
                .params("key","value")
                .tag(this)//需要取消请求的tag
                .success(str->{
                    //do something surccess
                })
                .error(v->{
                    //deal something error
                })
                .get();

post请求

new HttpBuilder("url")
                .params(map)
                .params("key","value")
                .tag(this)//需要取消请求的tag
                .success(new Success() {
                    @Override
                    public void Success(String model) {

                    }
                })
                .error(new Error() {
                    @Override
                    public void Error(Object... values) {

                    }
                })
                .post();

下载文件

流式下载,直接写入文件,不存到内存,避免oom

 new HttpBuilder("http://sw.bos.baidu.com/sw-search-sp/software/c07cde08ce4/Photoshop_CS6.exe")
                .path(getExternalFilesDir(null) + File.separator + "Photoshop_CS6.exe")
                .progress(p -> {
                    progress.setText(100 * p + "%");
                })
                .success(s -> {
                    //返回path
                })
                .error(t -> {
                })
                .download();

rxjava

返回的流为异步

new HttpBuilder("url")
                .params(map)
                .params("key","value")
                .tag(this)//需要取消请求的tag
           .obpost();
               //obget() get请求
                //Obdownload()下载流;

取消请求

调用时添加tag的请求 要取消下载请求也需要给请求添加对应的独立tag

   @Override
    protected void onDestroy() {
        super.onDestroy();
        HttpUtil.cancel(this);
    }

初始化配置

请求前参数统一处理,追加渠道名称用户手机号之类

   ParamsInterceptor mParamsInterceptor = new ParamsInterceptor() {
            @Override
            public Map checkParams(Map params) {
                //追加统一参数
                params.put("app_type", "android_price");
                return params;
            }
        };

请求前headers统一处理

    HeadersInterceptor mHeadersInterceptor = new HeadersInterceptor() {
               @Override
               public Map checkHeaders(Map headers) {
                   //追加统一header,例:数据缓存一天
                   headers.put("Cache-Time", "3600*24");
                   return headers;
               }
           };

应用入口进行初始化

   new HttpUtil.SingletonBuilder(getApplicationContext())
                .baseUrl("baseurl")//URL请求前缀地址。必传
//                .addServerUrl("")//备份服务器ip地址,可多次调用传递
//                .addCallFactory()//不传默认StringConverterFactory
//                .addConverterFactory()//不传默认RxJavaCallAdapterFactory
//                .client()//OkHttpClient,不传默认OkHttp3
                .paramsInterceptor(mParamsInterceptor)//不传不进行参数统一处理
//               .headersInterceptor(mHeadersInterceptor)//不传不进行headers统一处理
                .build();

依赖添加

maven

<dependency>
  <groupId>com.gengqiquan</groupId>
  <artifactId>httputil</artifactId>
  <version>1.0.5</version>
  <type>pom</type>
</dependency>

gralde

compile 'com.gengqiquan:httputil:1.0.5'

lvy

<dependency org='com.gengqiquan' name='httputil' rev='1.0.5'>
  <artifact name='httputil' ext='pom' ></artifact>
</dependency>