业务场景
我们通常需要cookie持久化来保持回话统一,也因为某些业务需求,需要每个接口都传一些参数,比如token、userId等。
原理解读
原理呢,比较简单的,把参数以请求头
的方式添加到拦截器
中,然后在配置给okhttp
。
代码实现
- 创建拦截器,并添加参数
public class HeaderInterceptor implements Interceptor {
@NonNull
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("version", "1.0.0")
.addHeader("自定义key", "自定义value");
Request request = requestBuilder.build();
return chain.proceed(request);
}
}
- 配置拦截器给OkHttp
OkHttpClient okHttpClient = new OkHttpClient.Builder()
...
.addInterceptor(new HeaderInterceptor())
...
.connectTimeout(20, TimeUnit.SECONDS)
.build();
也可以用@Header
或@Headers
注解给某一个接口单独添加一个或多个请求头。