业务场景
我们通常需要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
注解给某一个接口单独添加一个或多个请求头。