В документации Retrofit 2 говорится:
Заголовки, которые необходимо добавлять к каждому запросу, можно указать с помощью перехватчика OkHttp.
Это можно легко сделать с помощью предыдущей версии, вот связанное с ней QA.
Но с помощью retrofit 2 я не смог найти что-то вроде setRequestInterceptor
или setInterceptor
метода, который можно было бы применить к Retrofit.Builder
объекту.
Также похоже, что RequestInterceptor
в OkHttp больше нет. Документ Retrofit отсылает нас к Interceptor , но я не совсем понимал, как его использовать для этой цели.
Как я могу это сделать?
enqueue
я не вижу заголовки по умолчанию.new OkHttpClient.Builder()
вместо этогоnew OkHttpClient()
Последняя версия модернизации ЗДЕСЬ -> 2.1.0.
лямбда-версия:
уродливая длинная версия:
полная версия:
gradle (вам нужно добавить перехватчик журналирования, если вы планируете его использовать):
источник
Для регистрации вашего запроса и ответа вам нужен перехватчик, а также для установки заголовка вам нужен перехватчик. Вот решение для одновременного добавления обоих перехватчиков с помощью модификации 2.1
Теперь в вашем объекте модернизации добавьте этот заголовок в клиент
источник
Попробуйте заголовок этого типа для Retrofit 1.9 и 2.0. Для типа содержимого Json.
Вы можете добавить еще много заголовков, т.е.
Динамически добавлять в заголовки:
Назовите вас методом ie
Или
Хотите передавать каждый раз, затем создайте объект HttpClient с помощью http Interceptor:
Затем добавьте к объекту модернизации
ОБНОВЛЕНИЕ, если вы используете Kotlin, удалите
{ }
иначе, это не сработаетисточник
В моем случае
addInterceptor()
не получилось добавить HTTP-заголовки к моему запросу, мне пришлось использоватьaddNetworkInterceptor()
. Код выглядит следующим образом:И код перехватчика:
Этот и другие примеры по этой сути
источник
Если вы используете метод addInterceptor для добавления HttpLoggingInterceptor, он не будет регистрировать вещи, добавленные другими перехватчиками, примененными позже, чем HttpLoggingInterceptor.
Например: если у вас есть два перехватчика «HttpLoggingInterceptor» и «AuthInterceptor» и сначала применены HttpLoggingInterceptor, то вы не можете просматривать http-параметры или заголовки, установленные AuthInterceptor.
Я решил это, используя метод addNetworkInterceptor.
источник
HttpLoggingInterceptor
в качестве последнего перехватчика, чтобы увидеть окончательный запрос.Используйте этот клиент модернизации
Я передаю JWT вместе с каждым запросом. Не обращайте внимания на имена переменных, это немного сбивает с толку.
источник
В котлине добавление перехватчика выглядит так:
источник
Библиотека RetrofitHelper, написанная на kotlin, позволит вам выполнять вызовы API, используя несколько строк кода.
Добавьте заголовки в свой класс приложения следующим образом:
А потом позвоните:
Для получения дополнительной информации см. Документацию
источник
Версия Котлина будет
источник