Страницы

Поиск по вопросам

вторник, 24 декабря 2019 г.

Как вернуть мета информацию из HEAD запроса используя Retrofit2?

#android #retrofit #header #request


Для взаимодействия с сервером использую ретрофит. Есть GET запрос который возвращает
огромное кол-во данных. Чтобы каждый раз не съедать трафик клиента нужно проверять
обновились ли данные га сервере. Для этого использую HEAD запрос к тому же эндпоинту.
Проблема в том что HEAD запрос в Call<> можно положить только Void иначе выкидывает
эксепшен. А при таком запросе в колбэк ничего не возвращается, так как у этого запроса
нет респонса. Немного погуглив я нашел способ все же получить нужную мне метаинформацю
из хедеров в Interceptor.

chain.proceed(request).header("etag"))

Но тут меня настигла очередная проблема, как без колбэка передать этот "етаг" туда
откуда был сделан реквест? Должен же быть какой нибудь адекватный/элегантный способ?
    


Ответы

Ответ 1



Retrofit2 корректно возвращает респонс в коллбек при HEAD запросах. Данный код у меня отлично работает: Call c = service.headRequest(url); c.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { response.headers(); } @Override public void onFailure(Call call, Throwable t) { } }); response не пустой и содержит в себе хедэры response.headers(). Если в вашем случае это не работает, то возможно, что проблема в сервере, который некорректно обрабатывает HEAD запросы.

Комментариев нет:

Отправить комментарий