前言
上篇讲到Retrofit2+Okhttp3添加统一请求头
,这篇是添加统一请求体
,原理是相通的,把参数以请求体
的方式添加到拦截器
中,然后在配置给okhttp
。
代码实现
- 创建拦截器,并添加参数
public class HeaderInterceptor implements Interceptor {
@NonNull
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
//添加请求体参数
HttpUrl url = original.url().newBuilder()
.addQueryParameter("name", "value")
.addQueryParameter("自定义key", "自定义value")
.build();
//重新配置请求并返回
Request request = original.newBuilder()
.method(original.method(), original.body())
.url(url)
.build();
return chain.proceed(request);
}
}
- 配置拦截器给OkHttp
OkHttpClient okHttpClient = new OkHttpClient.Builder()
...
.addInterceptor(new HeaderInterceptor())
...
.connectTimeout(20, TimeUnit.SECONDS)
.build();