2016-09-19 7 views
1

Я пытаюсь добавить параметр запроса (маркер доступа) к каждой просьбе с этим tutorialRetrofit2: Добавление маркеров доступа в параметрах запроса с перехватчиком

задачами являются перехватчиками, которые рассчитывают будет начисляться в каждом запросе созданного ServiceGenerator:

httpClient.addInterceptor(new Interceptor() { 

вызывает также HTTPClient статичен, все перехватчики будут выполняться в запросах, где это не требуется.

Должен ли я создавать собственные OkHttpClients для обычного запроса и иметь для запроса токена? и должен ли я инициализировать перехватчик и аутентификатор только один раз, а затем использовать ServiceGenerator? или есть ли лучший подход?

+0

Вы можете создать несколько клиентов или добавить заголовки, как Заголовочные файлы в модифицированном запросе –

ответ

1

Я думаю, что это не очень хорошая идея добавить токен доступа в качестве параметра запроса.

Лучший способ будет добавить его в пользовательский заголовок, как это:

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(); 

Однако, вы можете по этой ссылке:

https://futurestud.io/tutorials/retrofit-2-how-to-add-query-parameters-to-every-request