You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NovelReader/app/src/main/java/com/monke/monkeybook/base/MBaseModelImpl.java

58 lines
4.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.monke.monkeybook.base;
import com.monke.basemvplib.EncodoConverter;
import com.monke.basemvplib.impl.RetryIntercepter;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;
public class MBaseModelImpl {
// 定义一个受保护的 OkHttpClient.Builder 类型的变量 clientBuilder
// 通过创建 OkHttpClient.Builder 的实例来构建一个 OkHttpClient 的配置构建器,
// 后续可以基于这个构建器来添加各种配置项,例如设置超时时间和添加拦截器等
protected OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
// 设置连接超时时间为 10 秒,即客户端尝试连接服务器的最长等待时间,超过这个时间若还未成功连接则认为连接超时
.connectTimeout(10, TimeUnit.SECONDS)
// 设置写超时时间为 10 秒,指客户端向服务器写入数据的最长时间限制,防止出现长时间写入无响应的情况
.writeTimeout(10, TimeUnit.SECONDS)
// 设置读超时时间为 10 秒,意味着客户端从服务器读取数据的最长允许时间,避免长时间等待读取数据导致阻塞等问题
.readTimeout(10, TimeUnit.SECONDS)
// 添加一个名为 ProxyInterceptor 的拦截器,这个拦截器可能用于对网络请求进行一些自定义的拦截处理,
// 比如添加请求头、修改请求参数、对请求进行代理转发等操作,但具体功能取决于 ProxyInterceptor 类的实现逻辑
.addInterceptor(new ProxyInterceptor());
// 定义一个受保护的方法 getRetrofitObject用于构建并返回一个 Retrofit 实例,
// 这个方法接收一个表示网络请求基础 URL 的字符串参数,用于配置 Retrofit 实例与哪个服务器地址进行通信
protected Retrofit getRetrofitObject(String url) {
// 通过 Retrofit.Builder 创建一个 Retrofit 的构建器实例,开始构建 Retrofit 对象,
// 构建过程中通过链式调用各种方法来添加不同的配置项
return new Retrofit.Builder().baseUrl(url)
// 添加 ScalarsConverterFactory使得 Retrofit 支持网络请求直接返回原始字符串类型的数据,
// 方便处理一些简单的文本数据返回的网络请求场景,不需要额外的复杂数据解析步骤
.addConverterFactory(ScalarsConverterFactory.create())
// 添加 RxJava2CallAdapterFactory让 Retrofit 能够将网络请求的返回结果转换为 RxJava 的 Observable 类型,
// 便于后续利用 RxJava 的响应式编程特性(如链式操作、异步处理、错误处理等)来处理网络请求的结果
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// 将之前配置好的 OkHttpClient 实例(通过 clientBuilder 构建完成)设置到 Retrofit 中,
// 这样 Retrofit 在发起网络请求时就会使用这个配置好的客户端来进行实际的 HTTP 操作
.client(clientBuilder.build())
// 最后通过 build 方法完成 Retrofit 对象的构建并返回,得到一个可用于发起具体网络请求的 Retrofit 实例
.build();
}
protected Retrofit getRetrofitString(String url, String encode) {
// 与 getRetrofitObject 方法类似,通过 Retrofit.Builder 开始构建 Retrofit 对象,先指定基础 URL
return new Retrofit.Builder().baseUrl(url)
// 添加 EncodoConverter通过传入指定的编码格式 encode使得 Retrofit 在处理返回值为字符串的网络请求时,
// 可以按照这个编码格式进行数据的转换或解析等操作,确保返回的字符串数据符合预期的编码要求
.addConverterFactory(EncodoConverter.create(encode))
// 同样添加 RxJava2CallAdapterFactory使 Retrofit 支持将返回结果转换为 RxJava 的 Observable 类型,便于后续进行响应式编程处理
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// 将配置好的 OkHttpClient 实例设置到 Retrofit 中,为网络请求提供实际的客户端支持
.client(clientBuilder.build())
// 完成 Retrofit 对象的构建并返回,得到一个适合处理特定编码格式字符串返回值的网络请求的 Retrofit 实例
.build();
}
}