-
implementation 'com.squareup.okhttp3:okhttp:3.6.0'
-
implementation 'com.squareup.okio:okio:1.11.0'
public class OKHttpUtil {
public static OKHttpUtil instance;
public OkHttpClient okHttpClient;
//私有化构造函数,阻止其他类内容new关键字创建对象
private OKHttpUtil() {
//tip:获取OKHttp对象
if (null == okHttpClient) {
synchronized (OkHttpClient.class) {
if (null == okHttpClient) {
//okHttpClient = new OkHttpClient();
//缓存文件
File file = new File(App.getInstance().getExternalCacheDir().getAbsolutePath(), "caches");
Cache cache = new Cache(file, 10 * 1024 * 1024);
//添加缓存拦截器
okHttpClient = new OkHttpClient
.Builder()
.addInterceptor(new CacheInterceptor())
.cache(cache)
.build();
}
}
}
}
//获取工具类对象
public static OKHttpUtil getInstance() {
//DCL双重检测锁获取实例对象
if (null == instance) {
//用锁防止多线程高并发的访问
synchronized (OKHttpUtil.class) {
if (null == instance) {
instance = new OKHttpUtil();
}
}
}
return instance;
}
/**
* get请求的封装
*
* @param urlString url地址
* @param callback 请求回调
*/
public void get(String urlString, Callback callback) {
Request request = new Request.Builder().url(urlString).build();
okHttpClient.newCall(request).enqueue(callback);
}
public void post(String urlString, FormBody formBody, Callback callback) {
Request request = new Request.Builder().method("POST", formBody).url(urlString).build();
okHttpClient.newCall(request).enqueue(callback);
}
}