首先导入依赖
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okio:okio:1.12.0'
public class Okhttp {
private static volatile Okhttp instance;
private Interceptor getAppInterceptor(){
//添加拦截器
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Log.e("Okhttp","拦截前");
Response response = chain.proceed(request);
Log.e("Okhttp","拦截后");
return response;
}
};
return interceptor;
}
private final OkHttpClient okHttpClient;
private Okhttp() {
File file = new File(Environment.getExternalStorageDirectory(), "cachell");
okHttpClient = new OkHttpClient().newBuilder()
.readTimeout(3000, TimeUnit.SECONDS)//设置读取超时时间
.connectTimeout(3000, TimeUnit.SECONDS)//设置连接超时时间
.addInterceptor(interceptor)//添加拦截器
.cache(new Cache(file, 10 * 1024))
.build();
}
//单例http
public static Okhttp getInstance(){
if (instance == null){
synchronized (Okhttp.class){
if (instance == null){
instance = new Okhttp();
}
}
}
return instance;
}
public static void okHttpGet(String url, Callback callback) {
//创建okhttpclient
OkHttpClient okHttpClient = new OkHttpClient();
//创建request
Request request = new Request
.Builder().url(url)
.method("GET", null)
.build();
okHttpClient.newCall(request).enqueue(callback);
}
public static void okHttpPost(String url, Map<String, String> parms, Callback callback) {
OkHttpClient client = new OkHttpClient();
FormBody.Builder builder = new FormBody.Builder();
for (String key : parms.keySet()) {
builder.add(key, parms.get(key));
}
Request request = new Request.Builder().url(url).post(builder.build()).build();
client.newCall(request).enqueue(callback);
}
}