Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RxHttp 3.0 更新指南,升级必看 #448

Open
liujingxing opened this issue Jun 29, 2023 · 1 comment
Open

RxHttp 3.0 更新指南,升级必看 #448

liujingxing opened this issue Jun 29, 2023 · 1 comment

Comments

@liujingxing
Copy link
Owner

1、默认OkHttpClient更改

在3.0版本之前,默认支持自签名的https,配置如下:

//Default OkHttpClient object in RxHttp                                      
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)                       
        .build();                                                            
}                                                                            

3.0版本则取消对自签名https的默认支持,更改后的如下:

//Default OkHttpClient object in RxHttp               
private static OkHttpClient getDefaultOkHttpClient() {
    return new OkHttpClient.Builder().build();   //okhttp内部读、写、连接超时均为10s      
}                                                     

所以,如果你之前没有自定义OkHttpClient对象,且需要支持没有证书的https网站,则需要自定义OkHttpClient对象,如下:

//建议在Application中调用
public static void init() {                                                            
    SSLParams sslParams = HttpsUtils.getSslSocketFactory();                            
    OkHttpClient client = new OkHttpClient.Builder()                                   
        .sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager) //添加信任证书 
        .hostnameVerifier((hostname, session) -> true) //忽略host验证                      
        .build();                                                                      
    RxHttpPlugins.init(client)                     //自定义OkHttpClient对象                 
        .setDebug(BuildConfig.DEBUG, false, 2)      //调试模式/分段打印/json数据格式化输出            
        .setOnParamAssembly(p -> {                 //设置公共参数,非必须                        
                                                                                       
        });                                                                            
}                                                                                      

2、缓存功能相关类目录更改

目前由之前的rxhttp.wrapper.cahce改为rxhttp.wrapper.cache,如有用到,重新导入即可

3、asXxx/toXxx/toFlowXxx方法更改

  • RxJava环境的asXxx方法改为了toObserableXxx

  • Await环境的toXxx系列方法改为toAwaitXxx方法

  • Flow环境仅更改了下载系列方法,由toFlow改为toDownloadFlow

以上详细更改,请查看3.0 toObserableXxx/toAwait/toFlowxxx方法介绍

4、setOnParamAssembly公共参数回调更改

public static void init() {                                                                                                                               
    RxHttpPlugins.init(client)                     
        .setDebug(BuildConfig.DEBUG, false, 2)     
        .setOnParamAssembly(p -> {               
            // return p;  3.0版本前,需要写return语句,3.0版本则不需要                        
                                                                                       
        });                                                                            
} 

5、RxJava上传进度监听方式更改

//3.0之前
RxHttp.postForm("/service/...")
    .addFile("file", File("sd卡路径"))
    .upload(AndroidSchedulers.mainThread()) {
        //上传进度回调,主线程   
    }    
    .asClass<User>() 
    .subscribe({                
        //成功回调  
    }, {                
        //异常回调                   
    })

//3.0
RxHttp.postForm("/service/...")
    .addFile("file", File("sd卡路径"))
    .toObservable<User>() 
    .onMainProgress {  //当然也可以调用onProgress指定回调线程
        //上传进度回调,主线程   
    } 
    .subscribe({                
        //成功回调
    }, {                
        //异常回调                   
    })

6、RxJava/Await/Flow下载方法更改

对于Await/Flow下载,仅仅是更改了方法名,由3.0前的toDownload/toFlow改为了toDownloadAwait/toDownloadFlow;

RxJava,不仅更改了方法名,还调整了下载进度监听方式,跟监听上传进度一样,如下:

//3.0之前
RxHttp.get("/service/.../xxx.apk")       
    .asDownload("sd卡路径", AndroidSchedulers.mainThread()) {  //断点下载调用asAppendDownload方法
        //下载进度回调,主线程   
    }
    .subscribe({                
        //成功回调,这里返回sd卡存储路径                      
    }, {                
        //异常回调                   
    })

//3.0
RxHttp.get("/service/.../xxx.apk")       
    .toDownloadObservable("sd卡路径", Boolean)  //断点下载第二个参数传true
    .onMainProgress {    //当然也可以调用onProgress指定回调线程
        //下载进度回调,主线程   
    }
    .subscribe({                
        //成功回调,这里返回sd卡存储路径                      
    }, {                
        //异常回调                   
    })

7、RxJava同步请求方法setSync更改

//3.0之前
RxHttp.get("/service/...")
    .setSync()
    .asClass<User>()
    .subscribe()

//3.0
RxHttp.get("/service/...")
    .toObservable<User>()
    .syncRequest()  //syncRequest替代setSync,并且需要在toObservableXxx方法后调用
    .subscribe()

8、获取Bitmap/Headers/OkHttp3.Response对象方式更改

  • 删除RxJava下的asBitmap/asHeaders()/asOkResponse方法

  • 删除Await下的toBitmap/toHeaders()/toOkResponse方法

  • 删除Flow下的toFlowBitmap/toFlowHeaders()/toFlowOkResponse方法

//3.0获取Bitmap
RxHttp.get("/server/...")
    .toObservable<Bitmap>()  //RxJava
    //.toAwait<Bitmap>()     //Await
    //.toFlow<Bitmap>()      //Flow

//3.0获取Headers/OkHttp3.Response
RxHttp.get("/server/...")
    .toObservable<OkResponse<User>>()  //Await/Flow 调用 toAwait/toFlow 
    .subscribe({                
        val headers = it.headers()    //Headers
        val response = it.raw()       //OkHttp3.Response
        val user = it.body()
    }, {                
        //异常回调                   
    })
@liujingxing
Copy link
Owner Author

#409

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant