OKHttpUtil 带缓存工具类

  1. implementation 'com.squareup.okhttp3:okhttp:3.6.0'

  2. 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);
    }
}
 

猜你喜欢

转载自blog.csdn.net/liu_qunfeng/article/details/81569985