Для взаимодействия с сервером использую ретрофит. Есть GET запрос который возвращает огромное кол-во данных. Чтобы каждый раз не съедать трафик клиента нужно проверять обновились ли данные га сервере. Для этого использую HEAD запрос к тому же эндпоинту. Проблема в том что HEAD запрос в Call<> можно положить только Void иначе выкидывает эксепшен. А при таком запросе в колбэк ничего не возвращается, так как у этого запроса нет респонса. Немного погуглив я нашел способ все же получить нужную мне метаинформацю из хедеров в Interceptor.
chain.proceed(request).header("etag"))
Но тут меня настигла очередная проблема, как без колбэка передать этот "етаг" туда откуда был сделан реквест? Должен же быть какой нибудь адекватный/элегантный способ?
Ответ
Retrofit2 корректно возвращает респонс в коллбек при HEAD запросах. Данный код у меня отлично работает:
Call
c.enqueue(new Callback
@Override
public void onFailure(Call
}
});
response не пустой и содержит в себе хедэры response.headers(). Если в вашем случае это не работает, то возможно, что проблема в сервере, который некорректно обрабатывает HEAD запросы.
Комментариев нет:
Отправить комментарий