Retrofit2请求添加Header和Query参数

2018-02-06  本文已影响0人  phantomvk

Retrofit2里一般通过@Query注解来给单个请求增加query参数,也可能需要给每个请求都加上query参数的场景:如Kong通过AuthorizationJWT值验证每个请求的合法性。

如果有很多接口,每个接口手动添加@Query注解是不合理的。这种情况下,最好的方式是拦截所有网络请求,添加query参数后再发送。

请看下列代码:

OkHttpClient.Builder client = new OkHttpClient.Builder();
        
client.addInterceptor(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
    
        Request request = chain.request();
        
        // 添加Query参数
        HttpUrl httpUrl = request.url()
                .newBuilder()
                .addQueryParameter("QueryNameA", "queryValueA")
                .addQueryParameter("QueryNameB", "queryValueB")
                .build();
        
        // 添加Header参数
        Request request = original.newBuilder()
                .addHeader("HeaderKeyA", headerValueA)
                .addHeader("HeaderKeyB", headerValueB)
                .url(httpUrl)
                .build();
        
        return chain.proceed(request);
});

通过.addQueryParameter(key, val),把单对甚至多对Key-Value添加到请求中。之后build()构建出HttpUrl加入Request.Builder中即可。

上一篇 下一篇

猜你喜欢

热点阅读