#android #retrofit #header #request
Для взаимодействия с сервером использую ретрофит. Есть GET запрос который возвращает огромное кол-во данных. Чтобы каждый раз не съедать трафик клиента нужно проверять обновились ли данные га сервере. Для этого использую HEAD запрос к тому же эндпоинту. Проблема в том что HEAD запрос в Call<> можно положить только Void иначе выкидывает эксепшен. А при таком запросе в колбэк ничего не возвращается, так как у этого запроса нет респонса. Немного погуглив я нашел способ все же получить нужную мне метаинформацю из хедеров в Interceptor. chain.proceed(request).header("etag")) Но тут меня настигла очередная проблема, как без колбэка передать этот "етаг" туда откуда был сделан реквест? Должен же быть какой нибудь адекватный/элегантный способ?
Ответы
Ответ 1
Retrofit2 корректно возвращает респонс в коллбек при HEAD запросах. Данный код у меня отлично работает: Callc = 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 запросы.
Комментариев нет:
Отправить комментарий