Добавить заголовок перехватчик после входа в систему - Retrofit - PullRequest
0 голосов
/ 16 марта 2020

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

Вход без auth just user и password

Затем сервер возвращает токен Bearer

Как установить аутентификацию заголовка автоматически, а не добавлять ее вручную при каждом вызове модификации? Там в любом случае? Нужно ли использовать один и тот же экземпляр Retrofit?

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете сделать это, сделав свой собственный перехватчик, ниже приведен код

 class AuthorizationInterceptor(var context: Context) : Interceptor {

     override fun intercept(chain: Interceptor.Chain): Response {
        var request: Request = chain.request()
        val sessionId = "Your Session Id"

        if (tempSessionId != null) {
            request = request.newBuilder()
                .addHeader("Authorization", "Bearer $tempSessionId").build()
        }
       return chain.proceed(request)
     }
}

, а затем добавить этот перехватчик следующим образом

class RetrofitInstance(var context: Context) {

    private val BASE_URL = APIVersionConstants.BASE_URL


    private val builder = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .client(makeOkHttpClient()) 


    private fun makeOkHttpClient(): OkHttpClient {
        return OkHttpClient.Builder()
            .addInterceptor(AuthorizationInterceptor(context)) //<----HERE
            .build()
    }

    private val retrofit = builder.build()

    fun <T> buildService(serviceType: Class<T>): T {
        return retrofit.create(serviceType)
    }


}

Это сделано

...