深入了解深入了解OkHttp3之之Interceptors
主要介绍了深入了解OkHttp3之Interceptors,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
OKHttp官网上面介绍:拦截器是一种强大的机制,可以监视,重写和重试调用。这里我们主要对拦截器的网络请求头和数据请求的封装。
网络请求头拦截器网络请求头拦截器
在Android应用中,我们通常需要获取用户手机的IMEI值和其他一些常用的参数,如果把他们封装到请求头里面的话会非常的方便。
既然是自定义拦截器,我们首先肯定要继承OKHttp的拦截器,把这个自定义类设置成 final 类型的防止其他类继承。
这里需要在父类的intercept(Chain chain)方法中进行操作。在方法里面得Request.Builder对象然后添加请求头。
创建一个BaseParam 对象,对请求头的参数进行封装。
public final class HeaderInterceptorTest implements Interceptor {
/**
* 请求头参数基础参数
*/
private static final String HEADER_BASE_PARAM = "baseParam";
private static String BASE_PARAM;
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
builder.addHeader(HEADER_BASE_PARAM, BASE_PARAM);
return chain.proceed(builder.build());
}
public static void initBaseParam(Context context) {
BaseParam baseParam = new BaseParam();
String imei;
String imsi;
try {
imei = DeviceInfoUtil.getIMEI(context);
} catch (Exception e) {
imei = null;
}
if (null == imei || imei.equals("")) {
imei = DeviceInfoUtil.getDeviceID(context);
imsi = DeviceInfoUtil.getDeviceID(context);
} else {
imei = DeviceInfoUtil.getIMEI(context);
imsi = DeviceInfoUtil.getIMSI(context);
}
baseParam.setImei(imei);
baseParam.setImsi(imsi);
baseParam.setMac(DeviceInfoUtil.getWifiMAC(context));
baseParam.setVersion(DeviceInfoUtil.getVersion(context));
baseParam.setModel(DeviceInfoUtil.getModel());
baseParam.setBrand(DeviceInfoUtil.getBrand());
BASE_PARAM = new Gson().toJson(baseParam).toString();
}
private static class BaseParam {
/**
* imei :
* imsi :
* mac :
* version :
* model :
* brand :
* city :
*/
private String imei;
private String imsi;
private String mac;
private String version;
private String model;
private String brand;
private String city;
public String getImei() {
return imei;
}
public void setImei(String imei) {
this.imei = imei;
}
public String getImsi() {
return imsi;
}
public void setImsi(String imsi) {
this.imsi = imsi;
}
public String getMac() {
return mac;
}
public void setMac(String mac) {
this.mac = mac;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getModel() {
return model;
评论0
最新资源