OkHttp缓存工具类----饿汉式
2017-12-20 09:43
204 查看
package app.jiyun.com.android_day02_okhttp.design;
import android.os.Environment;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by lvxinxin on 2017/12/19.
* OKHTTP工具类
* 加入缓存
*/
public class MyOkHttp {
private static MyOkHttp myOkHttp = new MyOkHttp();
private OkHttpClient okHttpClient;
private Cache cache;
private long maxSize = 8 * 1024 * 1024;
private MyOkHttp() {
//Environment用来管理手机SDcard内存的
File file = new File(Environment.getExternalStorageDirectory() + "/H1706A");
cache = new Cache(file, maxSize);
//OKHTTPClient两种写法 第二种就是通过构造者模式也可以使用
okHttpClient = new OkHttpClient.Builder().cache(cache).build();
}
public static MyOkHttp getMyOkHttp() {
return myOkHttp;
}
//同步下get,Post
public String sendGet(String url) throws IOException {
Request request = new Request.Builder().url(url).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
//同步下Post
public String sendPost(String url, RequestBody body) throws IOException {
Request request = new Request.Builder().url(url).post(body).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
//异步的封装 GET和POST自己 预习一下缓存OkHttp如何使用缓存
public void sendAsyncGet(String url, Callback callback) {
Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(callback);
}
//异步的POST
public void sendAsyncPost(String url, RequestBody body, Callback callback) {
Request request = new Request.Builder().url(url).post(body).build();
okHttpClient.newCall(request).enqueue(callback);
}
//测试缓存
public String sendCacheGet(String url) throws IOException {
//要缓存数据 需要加上一个方法cacheControl
Request request = new Request.Builder().url(url).cacheControl(new CacheControl.Builder().maxStale(24 * 60 * 60, TimeUnit.SECONDS).build()).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
}
import android.os.Environment;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by lvxinxin on 2017/12/19.
* OKHTTP工具类
* 加入缓存
*/
public class MyOkHttp {
private static MyOkHttp myOkHttp = new MyOkHttp();
private OkHttpClient okHttpClient;
private Cache cache;
private long maxSize = 8 * 1024 * 1024;
private MyOkHttp() {
//Environment用来管理手机SDcard内存的
File file = new File(Environment.getExternalStorageDirectory() + "/H1706A");
cache = new Cache(file, maxSize);
//OKHTTPClient两种写法 第二种就是通过构造者模式也可以使用
okHttpClient = new OkHttpClient.Builder().cache(cache).build();
}
public static MyOkHttp getMyOkHttp() {
return myOkHttp;
}
//同步下get,Post
public String sendGet(String url) throws IOException {
Request request = new Request.Builder().url(url).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
//同步下Post
public String sendPost(String url, RequestBody body) throws IOException {
Request request = new Request.Builder().url(url).post(body).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
//异步的封装 GET和POST自己 预习一下缓存OkHttp如何使用缓存
public void sendAsyncGet(String url, Callback callback) {
Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(callback);
}
//异步的POST
public void sendAsyncPost(String url, RequestBody body, Callback callback) {
Request request = new Request.Builder().url(url).post(body).build();
okHttpClient.newCall(request).enqueue(callback);
}
//测试缓存
public String sendCacheGet(String url) throws IOException {
//要缓存数据 需要加上一个方法cacheControl
Request request = new Request.Builder().url(url).cacheControl(new CacheControl.Builder().maxStale(24 * 60 * 60, TimeUnit.SECONDS).build()).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
}
相关文章推荐
- 网络请求工具类之OkHttp3封装(支持缓存、日志、拦截器、断点下载、上传等)
- Okhttp工具类——缓存图片
- 让OkHttp3 也能缓存Post 请求
- OkHttp3源码分析[缓存策略]
- OkHttp缓存功能的应用
- 【android】实现图片的三级缓存。工具类
- 缓存工具类LruCache
- OkHttp3源码分析[缓存策略]
- okhttp3.4.1+retrofit2.1.0实现离线缓存的示例
- 框架基础____缓存框架基本的原理_一个简单的缓存工具类CacheUtil
- Android Okhttp缓存:精细化每一个Request的CacheControl缓存控制策略(二)
- 基于okhttp3的工具类HttpUtils
- retrofit+okhttp 实现缓存
- 2、okhttp响应缓存
- 清除缓存工具类
- 使用ConcurrentHashMap作为缓存工具类的总结
- Okhttp----缓存的加入方式, cache-control说明
- 一个具有缓存数据功能的HttpWebRequest工具类
- 比SharedPrefereces更强大的缓存工具类
- Android清除外部和内部缓存,数据库,SharedPreference,指定路径下的文件,获取缓存大小,格式化储存单位工具类