Наша команда решила внедрить Retrofit 2.0, и я провожу предварительные исследования. Я новичок в этой библиотеке.
Мне интересно, как использовать interceptor
для добавления настраиваемых заголовков через Retrofits 2.0 в нашем приложении для Android. Существует множество руководств по использованию interceptor
для добавления заголовков в Retrofit 1.X, но поскольку API-интерфейсы сильно изменились в последней версии, я не уверен, как адаптировать эти методы в новой версии. Кроме того, Retrofit еще не обновил свою новую документацию.
Например, в следующих кодах, как мне реализовать Interceptor
класс для добавления дополнительных заголовков? Кроме того, что такое недокументированный Chain
объект ? Когда будет intercept()
называться?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
/
и что ваши URL-адреса API не имеют (stuff/post/whatever
)Ответы:
Проверь это.
Котлин
источник
intercept()
срабатывает каждый раз, когда из приложения отправляется запрос? Можем ли мы поймать промежуточный ответ для перенаправления или просто получить окончательный ответ?client.interceptors()
. Это выглядит такnew OkHttpClient.Builder().addInterceptor(<Your Interceptor>).build()
Еще одна альтернатива из принятого ответа
источник
request.newBuilder().headers(moreHeaders).build()
что сохраним исходные заголовки?источник
Вы можете использовать заголовки с помощью перехватчиков с помощью встроенных методов, подобных этому
источник
final Context context
в списке параметров.context
потому что это бизнес-логика.