Android 第2步:使用拦截器在查询参数中添加访问令牌

Android 第2步:使用拦截器在查询参数中添加访问令牌,android,access-token,interceptor,retrofit2,okhttp3,Android,Access Token,Interceptor,Retrofit2,Okhttp3,我正试图用这个函数向每个请求添加查询参数(访问令牌) 问题在于拦截器,它将在ServiceGenerator创建的每个请求中累积: httpClient.addInterceptor(new Interceptor() { 由于httpClient是静态的,所有拦截器都将在不需要它的请求中执行 我应该为普通请求创建自己的OKHttpClient,为令牌请求创建自己的OKHttpClient吗?我应该只初始化一次拦截器和验证器,然后使用ServiceGenerator吗?或者有更好的方法吗?我认

我正试图用这个函数向每个请求添加查询参数(访问令牌)

问题在于拦截器,它将在ServiceGenerator创建的每个请求中累积:

httpClient.addInterceptor(new Interceptor() {
由于httpClient是静态的,所有拦截器都将在不需要它的请求中执行


我应该为普通请求创建自己的OKHttpClient,为令牌请求创建自己的OKHttpClient吗?我应该只初始化一次拦截器和验证器,然后使用ServiceGenerator吗?或者有更好的方法吗?

我认为添加访问令牌作为查询参数不是一个好主意

更好的方法是将其添加到自定义标题中,如下所示:

okHttpClient = new OkHttpClient.Builder()
                .cache(setCache(context))
                .certificatePinner(certificatePinnerBuilder.build())
                .retryOnConnectionFailure(false)
                .readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS)
                .connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS)
                .addInterceptor(new Interceptor() {
                    @Override
                    public okhttp3.Response intercept(Chain chain) throws IOException {
                        Request original = chain.request();

                        Request request = original.newBuilder()
                                .header("Content-type", "application/json")
                                .header("AUTH_TOKEN", token)
                                .method(original.method(), original.body())
                                .build();

                        return chain.proceed(request);
                    }
                })
                .addInterceptor(logger)
                .build();
但是,您可以点击以下链接:


您可以在改装请求中创建几个客户端或添加头文件作为头文件