版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xueshao110/article/details/88540717
Retrofit+RxJava2
改代码是在mvp的使用
直接代码
把网络请求封装成一个类HttpManger
public class HttpManager { public OkHttpClient getOkHttpClient(){ // log用拦截器 HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); // 开发模式记录整个body,否则只记录基本信息如返回200,http协议版本等 logging.setLevel(HttpLoggingInterceptor.Level.BODY); // 如果使用到HTTPS,我们需要创建SSLSocketFactory,并设置到client // SSLSocketFactory sslSocketFactory = null; return new OkHttpClient.Builder() // HeadInterceptor实现了Interceptor,用来往Request Header添加一些业务相关数据,如APP版本,token信息 // .addInterceptor(new HeadInterceptor()) .addInterceptor(logging) // 连接超时时间设置 .connectTimeout(10, TimeUnit.SECONDS) // 读取超时时间设置 .readTimeout(10, TimeUnit.SECONDS) .build(); } public Retrofit getRetrofit(OkHttpClient okHttpClient){ Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(ApiService.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(okHttpClient); return builder.build(); } }
model使用
public class RecommendModel { public void getApps(Callback<PageBean<AppInfo>> callback){ HttpManager manager = new HttpManager(); ApiService apiService =manager.getRetrofit(manager.getOkHttpClient()).create(ApiService.class); apiService.getApps("{'page':0}").enqueue(callback); } }
p层使用
public class RecommendPresenter implements RecommendContract.Presenter { private RecommendModel mModel; private RecommendContract.View mView; public RecommendPresenter(RecommendContract.View view){ this.mView = view; mModel = new RecommendModel(); } @Override public void requestDatas() { mView.showLodading(); mModel.getApps(new Callback<PageBean<AppInfo>>() { @Override public void onResponse(Call<PageBean<AppInfo>> call, Response<PageBean<AppInfo>> response) { if(response !=null){ mView.showResult(response.body().getDatas()); } else{ mView.showNodata(); } mView.dimissLoading(); } @Override public void onFailure(Call<PageBean<AppInfo>> call, Throwable t) { mView.dimissLoading(); mView.showError(t.getMessage()); } }); } }