Skip to content
liujingxing edited this page May 14, 2021 · 14 revisions

请求三部曲

RxHttp.get("/service/...") //第一步,确定请求方式,可以选择postForm、postJson等方法
    .asString()            //第二步,使用asXXX系列方法确定返回类型
    .subscribe(s -> {      //第三步, 订阅观察者
        //成功回调
    }, throwable -> {
        //失败回调
    });

任意请求,任意返回数据类型,皆遵循请求三部曲

任意请求,任意返回数据类型,皆遵循请求三部曲

任意请求,任意返回数据类型,皆遵循请求三部曲

get请求

RxHttp.get("/service/...")     
    .add("key", "value")
    .asString()                     
    .subscribe(s -> {               
        //成功回调
    }, throwable -> {
        //失败回调
    });

post Form请求

RxHttp.postForm("/service/...")       //发送表单形式的post请求
    .add("key", "value")
    .asString()
    .subscribe(s -> {
        //成功回调
    }, throwable -> {
        //失败回调
    });

初始化

初始化是非必须的,如下:

RxHttpPlugins.init(OkHttpClient)      //自定义OkHttpClient对象                               
    .setDebug(boolean)                //是否开启调试模式,开启后,logcat过滤RxHttp,即可看到整个请求流程日志        
    .setCache(File, long, CacheMode)  //配置缓存目录,最大size及缓存模式              
    .setExcludeCacheKeys(String...)   //设置一些key,不参与cacheKey的组拼                          
    .setResultDecoder(Function)       //设置数据解密/解码器,非必须                                  
    .setConverter(IConverter)         //设置全局的转换器,非必须                                    
    .setOnParamAssembly(Function);    //设置公共参数/请求头回调                                                                   

如需要添加拦截器等其他业务需求,则可调用init方法进行初始化,不初始化或者传入null即代表使用默认OkHttpClient对象,建议在Application中初始化,默认的OkHttpClient对象在RxHttpPlugins类中可以找到,如下:

private static OkHttpClient getDefaultOkHttpClient() {                              
    SSLParams sslParams = HttpsUtils.getSslSocketFactory();  
    return new OkHttpClient.Builder()                                               
        .connectTimeout(10, TimeUnit.SECONDS)                                       
        .readTimeout(10, TimeUnit.SECONDS)                                          
        .writeTimeout(10, TimeUnit.SECONDS)                                         
        .sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager) //添加信任证书                  
        .hostnameVerifier((hostname, session) -> true) //忽略host验证                   
        .build();                                                                   
}                                                                                   

虽然初始化是非必须的,但是建议大家传入自定义的OkHttpClient对象,一来,自定义的OkHttpClient能最大化满足自身的业务;二来,随着RxHttp版本的升级,默认的OkHttpClient可能会发生变化(虽然可能性很小),故建议自定义OkHttpClient对象传入RxHttp。