创建一个私有化方法
private OKHttpUtil() {
client = new OkHttpClient.Builder().
//这里addInterceptor就是创建拦截器
addInterceptor(new LogInterceptor()).
build();
}
新建一个类,用来做拦截器,并且继承Interceptor
public class LogInterceptor implements Interceptor {
Request request = chain.request();
Log.e("LogInterceptor", "request:" + request);
Log.e("LogInterceptor", "System.nanoTime():" + System.nanoTime());
Response response = chain.proceed(request);
Log.e("LogInterceptor", "request:" + request);
Log.e("LogInterceptor", "System.nanoTime():" + System.nanoTime());
return response;
}
拦截器写完之后回到我们的OkHttp类
创建一个公有的方法,供外部访问
public static OKHttpUtil getInstance() {
if (null == okHttpUtil) {
synchronized (OKHttpUtil.class) {
if (null == okHttpUtil) {
okHttpUtil = new OKHttpUtil();
}
}
}
return okHttpUtil;
}
再把get进行封装
public void get(String urlString, Callback callback) {
Request request = new Request.Builder()
.url(urlString).build();
client.newCall(request).enqueue(callback);
}
在M层进行调用封装好的OKHttp
OKHttpUtil
.getInstance()
.get(Constant.CATEGORY_URL, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//错误的数据
String errorMsg = e.getMessage();
onCallBack.onCallBack(errorMsg);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//请求得到的数据
String reponseData = response.body().string();
//回调
onCallBack.onCallBack(reponseData);
}
});