组件化爬坑---RxJava2+Retrofit2+Okhttp封装

本文介绍了在组件化开发中如何对使用RxJava2、Retrofit2和Okhttp的网络请求进行封装,以实现网络层与业务层的解耦。通过HttpClient采用Builder模式构建网络请求类,利用BaseApi接口不直接依赖Retrofit创建的Observable,只关注上层的Observable处理。同时定义BaseResultEntity和OnHttpResultListener,确保服务器返回数据的统一格式。在上层模块中,通过实现BaseApi并调用网络层接口完成请求,达到网络层与具体接口定义的解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在公司组件化开发中,让我很头疼的就是网络层的交互了,由于历史原因,我们的网络封装与业务耦合度很高,拆分起来比较头疼,没办法,既然要做组件化,只能耐着性子慢慢拆分。

切入正题,我们的项目网络请求使用的是RxJava2+Retrofit2+Okhttp,为了将网络模块单独抽出来以适应三个端的调用,就得让网络层与业务层完全隔离。

这里介绍我目前对网络层简单实用的封装,网络请求就一个类Httpclient:

/**
 * 网络请求封装类
 * =============================
 * 使用:
 * new HttpClient.Builder()
 *          .baseUrl(..)
 *          .url(..)
 *          .interceptor(..)
 *          .listener(..)
 *          .build()
 *          .request(BaseApi);
 * ================================
 *
 * Created by huolala-sunyan on 2018/8/15.
 */
public class HttpClient {

    private static OkHttpClient mOkHttpClient ;

    private String baseUrl;
    private OnHttpResultListener listener;
    private int retryCount = 3; //retry次数
    private int retryDelay = 3000; //retry延迟
    private int retryIncreaseDelay = 3000; //retry叠加

    private HttpClient(String baseUrl, Interceptor interceptor, OnHttpResultListener listener ,int retryCount ,int retryDelay , int retryIncreaseDelay){
        this.baseUrl = baseUrl;
        this.listener = listener;
        this.retryCount = retryCount;
        this.retryDelay = retryDelay;
        this.retryIncreaseDelay = retryIncreaseDelay;

        OkHttpClient.Builder b = new OkHttpClient.Builder();
        b.readTimeout(20, TimeUnit.SECONDS);
        b.connectTimeout(20, TimeUnit.SECONDS);
        //加调试用
        if (BuildConfig.DEBUG)
            b.addNetworkInterceptor(new StethoInterceptor());
        if (interceptor != null){
            b.addInterceptor(interceptor);
        }
        HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);
        b.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager);
        mOkHtt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fastsy

打赏一份隆江猪脚饭吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值