封装的retrofit网络请求

1.导入依赖包

    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'

    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

   maven { url 'https://jitpack.io' }项目里build里面

2.

public class NetRequestUtils {

    private NetRequestUtils Instance;
    private Baseretrofit baseretrofit;
    private static ClearableCookieJar cookieJar;

    public NetRequestUtils(Baseretrofit baseretrofit) {

        this.baseretrofit=baseretrofit;
    }

    static {
        cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(MyApp.context));
    }
    public NetRequestUtils() {

    }

    public Baseretrofit getbaseretrofit(){

        return baseretrofit;
    }



    public NetRequestUtils bucuo(){

        //打印响应结果
        HttpLoggingInterceptor loggingInterceptor=new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {

                Log.i("RetrofitLog","retrofitBack = "+message);
            }
        });

        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);


        OkHttpClient.Builder okHttpClient= new OkHttpClient.Builder();
        int maxcache=10*1024*1024;
        Cache cache=new Cache(Environment.getDataDirectory(),maxcache);
        okHttpClient.cache(cache);
        okHttpClient.addInterceptor(loggingInterceptor);
        okHttpClient.cookieJar(cookieJar);

        Retrofit.Builder retrofit=new Retrofit.Builder().baseUrl("https://newapi.henhaojie.com/user/").client(okHttpClient.build());
        retrofit.addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create());

        Baseretrofit baseretrofit = retrofit.build().create(Baseretrofit.class);

        Instance=new NetRequestUtils(baseretrofit);

        return Instance;


    }
}
3.专门写接口的
public interface Baseretrofit {


    @GET("product/homeact")
    Observable<DataBean> getup();

}

4.开始使用

Observable<DataBean> dataBeanObservable = new NetRequestUtils().bucuo().getbaseretrofit().getup().subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread());
dataBeanObservable.subscribe(new Observer<DataBean>() {
    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    public void onNext(DataBean dataBean) {
        //成功
        DataBean.RstBean.HomeactBean homeactBean = dataBean.rst.homeact.get(0);
        System.out.println("成功了"+homeactBean.update_time);
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {

    }
});

猜你喜欢

转载自blog.csdn.net/ZhangXuxiaoqingnian/article/details/82387934