Retrofit+Okhttp 데이터 및 콜백 패키징

3483 단어
BaseModel:
서버의 일괄 콜백 인터페이스는 다음 형식입니다.
{
  "code:":"",
  "msg:"",
  "content":
      {
         ....
      }
}

우선 저희가 필요한 데이터를 확인해야 돼요.
  • code상태코드와 msg정보는 필수
  • 일부post 요청 인터페이스에 대해 우리는 상태 코드만 알고 상태 코드에 따라 상응하는 논리를 판단하고 해당하는 정보를 팝업하며 콘텐츠의 내용이 필요하지 않다.
  • get 요청은 콘텐츠 내용을 가져오고 자주 사용하는 GsonConverterFactoryScalarsConverterFactory 변환기를 통해 우리가 필요로 하는 대상 데이터로 봉인할 수 있습니다.
  • 상태 코드의 차이:
  • 0 - 요청 성공
  • 1 - 요청 실패
  • 6 - 로그인 만료
  • ....등 기타 상태는 우리의 필요에 따라 아래 모델을 봉인했다
  • public class BaseModel implements Serializable {
        private String msg;
        private String code;
        private T content;
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public T getContent() {
            return content;
        }
    
        public void setContent(T content) {
            this.content = content;
        }
    
        /**
         *           
         *
         * @return boolean
         */
        public boolean isSuccess() {
            return code.equals("0");
        }
    
        /**
         *         
         *
         * @return boolean
         */
        public boolean isOverDue() {
            return code.equals("6");
        }
    }
    

    사용자 정의 콜백
    public abstract class BaseAction implements Action1> {
        @Override
        public void call(BaseModel tBaseModel) {
            if (tBaseModel.isSuccess()) {//    
                onSuc(tBaseModel.getMsg(), tBaseModel.getContent());
            } else if (tBaseModel.isOverDue()) {//    
                EventBus.getDefault().post(EventBusEvent.TOKEN_EVENT);
            } else {//    
                onFail(tBaseModel.getMsg());
            }
        }
        protected abstract void onSuc(String msg, T content);
        protected abstract void onFail(String msg);
    }
    

    설명이 필요한 로그인 만료 콜백에서 Android EventBus 참조
    간단한 부탁
     String user_id = App.getInstance().getUserId();
     String autograph = App.getInstance().getSignToken();
     RetrofitHelper.deviceApi().devList(user_id, autograph)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new BaseAction() {
                        @Override
                        protected void onSuc(String msg, DeviceListBean content) {
                            mRecyclerView.refreshComplete(0);
                            mDeviceListBeen = content.getDev_list();
                            if (mDeviceListBeen != null && mDeviceListBeen.size() > 0) {
                                mLayoutEmpty.setVisibility(View.GONE);
                            } else {
                                mLayoutEmpty.setVisibility(View.VISIBLE);
                            }
                            mDeviceListAdapter.setDataList(mDeviceListBeen);
                        }
    
                        @Override
                        public void onFail(String msg) {
                            ToastUtil.showShort(mContext, msg);
                        }
                    }, new Action1() {
                        @Override
                        public void call(Throwable throwable) {
    
                        }
                    });
    

    이렇게 하면 매번 요청한 리셋이 훨씬 시원해진다.

    좋은 웹페이지 즐겨찾기