OkHttp攔截器新增頭部引數
阿新 • • 發佈:2018-12-20
搭建環境
…
其實以前的一篇攔截器和這篇差不多 :詳細步驟
攔截器程式碼:
/** * 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);
}
}