.writeTimeout(TIME_OUT, TimeUnit.SECONDS)
.build();
}
}
}
return okHttpClient;
}
public Retrofit initRetrofit() {
if (retrofit == null) {
synchronized (NetworkManager.class) {
if (retrofit == null) {
//注释2:创建Retrofit
retrofit = new Retrofit.Builder()
.client(initClient())//选填
.baseUrl(IWanAndroidService.BASE_URL)//必填
.addConverterFactory(GsonConverterFactory.create())//选填(数据转换器,解析)
.build();
}
}
}
return retrofit;
}
}
-
注释1:创建OkHttpClient对象,构建一个网络类型的实例,一般会将所有的网络请求使用同一个单例对象。(如果OkHttpClient使用默认,可不设置)
-
注释2:创建Retrofit对象,构建一个网络请求的载体对象,在build的时候有非常多的初始化内容,如设置OkHttpClient、设置请求的url,添加数据转换器等。
💥 网络请求
//GET
//注释1:动态获取IWanAndroidService对象
IWanAndroidService service = NetworkManager.getInstance().initRetrofit().create(IWanAndroidService.class);
//注释2:网络请求
service.homeBanner().enqueue(new Callback<ResponseData<List>>() {
@Override
public void onResponse(Call<ResponseData<List>> call, Response<ResponseData<List>> response) {
if (response.body().getData() != null) {
MLog.e(response.body().getData().get(0).toString());
binding.loginTvContent.setText(response.body().getData().get(0).toString());
}
}
@Override
public void onFailure(Call<ResponseData<List>> call, Throwable t) {
MLog.e(t.getMessage());
}
});
//POST
Map<String, String> map = new HashMap<>();
map.put(“username”, account);
map.put(“password”, passsword);
map.put(“repassword”, passsword);
NetworkManager.getInstance().initRetrofit().create(IWanAndroidService.class)
.register(map).enqueue(new Callback<ResponseData>() {
@Override
public void onResponse(Call<ResponseData> call, Response<ResponseData> response) {
if (response.body().getData() != null) {
MLog.e(response.body().getData().toString());
binding.loginTvContent.setText(response.body().getData().toString());
}
}
@Override
public void onFailure(Call<ResponseData> call, Throwable t) {
MLog.e(t.getMessage());
}
});
Retrofit的精髓:为统一配置网络请求完成动态代理的设置。
💥 效果图
🔥 Rxjava
=====&