搭建环境
…
其实以前的一篇拦截器和这篇差不多 :详细步骤
拦截器代码:
/**
* date:2018/12/12
* author:辉(家辉辉辉)
* function:拦截器
*/
public class Util_interptor implements Interceptor {
//初始化Map集合
Map<String,String> mParentMap;
public Util_interptor(Map<String, String> parentMap) {
mParentMap = parentMap;
}
@Override
public Response intercept(Chain chain) throws IOException {
//拿到request
Request requestFu = chain.request();
//用request获取网址
String url = requestFu.url().toString();
//判断集合是否非空
if (mParentMap!=null && mParentMap.size()>0){
Request.Builder builder = requestFu.newBuilder();
for(String user: mParentMap.keySet()){
//添加头部参数
builder.addHeader(user,mParentMap.get(user));
}
Request build = builder.url(url).build();
return chain.proceed(build);
}
return chain.proceed(requestFu);
}
}
调用:
//通过初始化的上下文得到数据
SharedPreferences data = ConfigApplication.sContext.getSharedPreferences("data", 0);
//传参
Map<String, String> map = new HashMap<>();
map.put("userId", data.getString("userId", ""));
map.put("sessionId", data.getString("sessionId", ""));
//创建handler
mHandler = new Handler(Looper.getMainLooper());
//创建client
mClient = new OkHttpClient.Builder()
....
.addInterceptor(new Util_interptor(map))
.build();
上下文:
SharedPreferences 的创建
//获取pref对象
mPreferences = getSharedPreferences("data", MODE_PRIVATE);
//操作类
mEditor = mPreferences.edit();
//存数据
//其实就是存我们公共的参数
mEditor.putString("userId", loginUrl_post_bean.getResult().getUserId() + "");
mEditor.putString("sessionId", loginUrl_post_bean.getResult().getSessionId() + "");
mEditor.commit();
还有第二种方法
/**
* date:2018/12/12
* author:辉(家辉辉辉)
* function:拦截器
*/
public class Util_interptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
//获取原始的Request请求
Request request = chain.request();
//通过初始化的上下文得到数据
SharedPreferences data = ConfigApplication.sContext.getSharedPreferences("data", 0);
String userId = data.getString("userId", "");
String sessionId = data.getString("sessionId", "");
//如果有一个为空,不用添加请求头
if (TextUtils.isEmpty(userId) || TextUtils.isEmpty(sessionId)) {
return chain.proceed(request);
}
Request build = request.newBuilder()
.addHeader("userId", userId)
.addHeader("sessionId", sessionId)
.build();
return chain.proceed(build);
}
}