//导okhttp依赖compile 'com.squareup.okhttp3:okhttp:3.8.1'
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();
}
}