【安卓】rxjava2+retrofit封装处理网络请求全解析

使用rxjava2+retrofit处理网络请求,线程的切换变得十分简单,代码也简洁了很多。但是简介的代码就是对可扩展性有着负面的影响,所以要对rxjava2+retrofit进行一定封装,使结构更清晰,可扩展性更强。这里给出一种可行的封装。

以下均以登陆请求为例子。

  • API地址:http://xxx/user/login
  • Post请求,参数accountpassword均为String

简单封装

  1. 首先定一个retrofit接口:UserService

    public interface UserService {
         
    
        @FormUrlEncoded
        @POST("/user/login")
        Observable<ResponseBean<UidBean>> login(@Field("account") String account,
                                                @Field("password") String password);
    }

    这里ResponseBean是一个返回值json对应的实体类,服务器返回的json数据格式为{code: xxx, message: xxx, data:xxx}。而UidBean是一个data的具体内容,也是个json实体类,具体是什么无关紧要。

    /**
     * 服务器返回值的实体类
     * Created by stephen on 2017/9/8.
     */
    
    public class ResponseBean<T> {
         
        @SerializedName("code")
        private int code;
    
        @SerializedName("message")
        private String message;
    
        @SerializedName("data")
        private T data;
    
        public ResponseBean(int code, String message) {
            this.code = code;
            this.message = message;
        }
    
        public int getCode() {
            return code;
        }
    
        public String getMessage() {
            return message;
        }
    
        public T getData() {
            return data;
        }
    
        /**
         * 根据返回码确定API是否请求返回失败 
         *
         * @return 失败返回true, 成功返回false
         */
        public boolean isCodeValid() {
            return code == 0;
        }
    
        @Override
        public String toString() {
            return "code:" + code + ", message:" + message + ",data:" + data.toString();
        }
    }
  2. Oberser类的封装

    这里BaseObserver里直接对Disposable进行处理,内存泄漏什么的省心多了。同时还保存了一个子类可见的errMsg,可以获取自定义的错误类型。

    (关于Disposable可以参考我的这篇文章,如果有哪里理解错了记得帮忙指出哦)。

    public abstract class BaseObserver<T> implements Observer<T> {
         
    
        protected String errMsg = "";
        private Disposable disposable;
    
        @Override
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值