第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

開發(fā)一個(gè)好項(xiàng)目:五、創(chuàng)建數(shù)據(jù)源,創(chuàng)建網(wǎng)絡(luò)數(shù)據(jù)Service和網(wǎng)絡(luò)數(shù)據(jù)源

標(biāo)簽:
Android

前一篇文章:android开发(如何开发一个可以维护的好项目):四 、项目结构 框架地址 dileber android框架 希望大家能多多star一下
框架中集成了 retrofit2 网络请求库,使用注解来操作。

public interface SysService {
    /**
     * 登录
     */
    public static final String LOGIN = "api/v1/login";
 @POST(LOGIN)
    Call<UserWrapper> login(@Query("userName") String userName, @Query("passWord") String passWord);

}

写好之后,开始写网络数据源了。

继承BaseRemoteDataSource ,里面已经包含了retrofit2 请求方法,这个retrofit2 库,我对他的低层进行处理,支持cookie,如何配置cookie如下
在你请求后的回调方法,加入setCookie(response);就可以了,如登录之后再调用这个方法,就能持久化你的登录状态。除此之外,如果出现403这种网络失败的编号,会主动调用 Sapplication的appForbidden 方法,让你刷新session,之前的文章有提过。文章在这
如果要清除掉cookie的话,就用TCookie里的方法。

@Override
    public void checkUser(@NonNull UserModel userModel, final BaseDataSource.BaseCallback<UserWrapper> callback) {

        Call<UserWrapper> call = userService.login(userModel.getUsername(),userModel.getUserpass());

        call.enqueue(new RetCallback<UserWrapper>() {
            @Override
            protected void onSuccess(Call<UserWrapper> call, Response<UserWrapper> response) {
                UserWrapper userWrapper = response.body();
                if(userWrapper!=null){
                    setCookie(response);
                    callback.onSuccess(response.body());
                }else{
                    callback.onFailure(new DataSourceException("数据返回为空"));
                }
            }

            @Override
            protected void failure(Call<UserWrapper> call, Throwable throwable) {
                callback.onFailure(new DataSourceException(throwable.getMessage()));
            }
        });
    }

这个是hRetrofit,网络请求必不可少
hRetrofit = HRetrofit.getInstence(Config.HTTP_URL);
网络请求失败调用这个,new一个DataSourceException方法,这个方法是我写的数据源错误总方法。统一调用,好操作。

            callback.onFailure(new DataSourceException(throwable.getMessage()));
public class SysRemoteDataSource extends BaseRemoteDataSource implements SysDataSource{

    private static volatile SysRemoteDataSource instance;

    HRetrofit hRetrofit;
    SysService sysService;

    private SysRemoteDataSource(){

        hRetrofit = HRetrofit.getInstence(Config.HTTP_URL);
        sysService = hRetrofit.retrofit.create(SysService.class);
    }

    public static SysRemoteDataSource getInstance(){
        if (instance==null){
            synchronized (SysRemoteDataSource.class){
                if(instance==null){
                    instance = new SysRemoteDataSource();
                }
            }
        }
        return instance;
    }

    @Override
    public void launch(final BaseDataSource.BaseCallback<LaunchWrapper> callback) {
        Call<LaunchWrapper> call = sysService.launch();

        call.enqueue(new RetCallback<LaunchWrapper>() {
            @Override
            protected void onSuccess(Call<LaunchWrapper> call, Response<LaunchWrapper> response) {
                LaunchWrapper launchWrapper = response.body();
                if(launchWrapper!=null){
                    callback.onSuccess(response.body());
                }else{
                    callback.onFailure(new DataSourceException("数据返回为空"));
                }
            }

            @Override
            protected void failure(Call<LaunchWrapper> call, Throwable throwable) {
                callback.onFailure(new DataSourceException(throwable.getMessage()));
            }
        });
    }
}
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
81
獲贊與收藏
3604

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消