Android网络框架之Retrofit+RxJava+OkHt

2018-10-15  本文已影响16人  赵庆峰_

自己简单封装的网络请求框架,适合快速开发

build.gradle文件:

implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.okhttp3:okhttp:3.3.1'
implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
// 引入请求适配器
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0-RC3'
// 引入RxAndroid适应Android开发需求
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.google.code.gson:gson:2.8.2'

Retrofit的管理类:

private static ReaderApi instance;
private RetrofitService service;

/**
 * 请求超时时间
 */
private static final int DEFAULT_TIME_OUT = 50000;

public ReaderApi() {
    // 创建 OKHttpClient
    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//连接超时时间
    builder.writeTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//写操作 超时时间
    builder.readTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//读操作超时时间

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("网络请求BaseUrl")
            .client(builder.build())
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .build();
    service = retrofit.create(RetrofitService.class);
}

public static ReaderApi getInstance() {
    if (null == instance) {
        instance = new ReaderApi();
    }
    return instance;
}

public Observable<"这里是返回的JsonBean"> getHttpInfo("这里是传参") {
    return service.getHttpInfo("这里是传参");
}

RetrofitService:

@FormUrlEncoded
@POST("网络请求url")
Observable<"这里是返回的JsonBean"> getHttpInfo(@Field("post请求key值") String "这里是传参");

调用:

    ReaderApi.getInstance()
            .getHttpInfo("这里是传参")
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<MessageBean>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(MessageBean value) {
               
                }

                @Override
                public void onError(Throwable e) {
                 
                }

                @Override
                public void onComplete() {

                }
            });

可以在此基础上进行进一步封装。

上一篇下一篇

猜你喜欢

热点阅读