日志拦截器
public class LogInterceptorUtils implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
HttpUrl url = request.url();//获取请求地址
String method = request.method();//获取请求方式
Response response = chain.proceed(chain.request());//
String content = response.body().string();//获取请求内容
Log.i("LogInterceptor", "请求接口:" + url);
Log.d("LogInterceptor", "请求方式:" + method);
Log.w("LogInterceptor", "请求内容:" + content);
Headers headers = request.headers();//获取请求头
Set<String> names = headers.names();//请求头名字集合
Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
String value = headers.get(next);
Log.i("LogInterceptor", "请求头字段=" + next + ":自己填的字段=" + value);
}
return chain.proceed(request);
}
}
请求头拦截器
public class OkHeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
builder.addHeader("version", "version1.0");
builder.addHeader("platform", "android");
builder.addHeader("sessionId", SpUtils.getString("sessionId"));
builder.addHeader("userId", SpUtils.getInt("userId", 0) + "");
request = builder.build();
return chain.proceed(request);
}
}
OK callBack封装
public class MyCallBack implements Callback {
private Type type;
private ICallBack iCallBack;
private Handler handler;
public MyCallBack(Type type, ICallBack iCallBack) {
this.type = type;
this.iCallBack = iCallBack;
handler = new Handler();
}
@Override
public void onFailure(Call call, final IOException e) {
//将失败的异常返回去
handler.post(new Runnable() {
@Override
public void run() {
iCallBack.onFailed(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//获取到响应码
int code = response.code();
//获取到响应数据
String jsonData = response.body().string();
//创建Gson,将相应数据解析
Gson gson = new Gson();
final Object o = gson.fromJson(jsonData, type);
switch (code) {
case 200://响应码为200,返回去数据
if (iCallBack != null) {
//切换线程将数据返回去
handler.post(new Runnable() {
@Override
public void run() {
iCallBack.onSuccess(o);
}
});
}
break;
case 404:
iCallBack.onFailed(new Exception("路径不存在,请检查接口"));
break;
case 303:
break;
default:
iCallBack.onFailed(new Exception("服务器异常"));
break;
}
}
}
网络请求封装类
public class MyCallBack implements Callback {
private Type type;
private ICallBack iCallBack;
private Handler handler;
public MyCallBack(Type type, ICallBack iCallBack) {
this.type = type;
this.iCallBack = iCallBack;
handler = new Handler();
}
@Override
public void onFailure(Call call, final IOException e) {
//将失败的异常返回去
handler.post(new Runnable() {
@Override
public void run() {
iCallBack.onFailed(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//获取到响应码
int code = response.code();
//获取到响应数据
String jsonData = response.body().string();
//创建Gson,将相应数据解析
Gson gson = new Gson();
final Object o = gson.fromJson(jsonData, type);
switch (code) {
case 200://响应码为200,返回去数据
if (iCallBack != null) {
//切换线程将数据返回去
handler.post(new Runnable() {
@Override
public void run() {
iCallBack.onSuccess(o);
}
});
}
break;
case 404:
iCallBack.onFailed(new Exception("路径不存在,请检查接口"));
break;
case 303:
break;
default:
iCallBack.onFailed(new Exception("服务器异常"));
break;
}
}
}