После прочтения нижеследующего нити:Настройка заголовка пользовательских Content-Range в Restlet для использования в Dojo пагинации терпит неудачу
Setting a custom Content-Range Header using Restlet
Я попытался установить пользовательские UnitName в диапазоне для объекта. Это не решает проблему.
final Range range = new Range();
range.setUnitName("items");
range.setIndex(0);
range.setSize(20);
[...]
getResponseEntity().setRange(range);
getResponseEntity().setSize(100);
Ответ теперь содержит следующие заголовки:
Content-Range:"items 0-19/100"
Но Restlet также читает range.size (20 в данном случае) и путы это как Content-Length автоматически. Какие результаты в:..
Content-Length:"20"
Это приводит к тому, клиент (например, браузер, чтобы остановить чтение после 20Bytes (Это также вызывает исключение нуль-указатель на сервере, так как OutputStream закрывается неожиданно)
Официальная документация: http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/http-headers-mapping
говорит, что Content-Length доступен как message.entity.size, но для достижения нужной строки в Content-Range это должно быть установлено в 100. Это похоже на ошибку, поскольку диапазон .size используется для вычисления длины содержимого, а не размера объекта.
Я не могу установить длину контента вручную, так как это также стандартный заголовок, и все ручные изменения стандартных заголовков включены.
«Исправление», предложенное в упомянутой теме, изменяет только имя единицы измерения - не реальное устройство - указанного диапазона. Он по-прежнему интерпретируется как байты, которые непригодны для использования как таковые.
Использование значений в диапазоне дважды - для контента, а также для контента, похоже, проблема.
Есть ли новый способ вручную переопределить заголовки или сделать их совместимыми с dojo?
Изменения в ручном режиме блокируются в HeaderUtils, вызываемом ServerAdapter, в результате чего: «ПРЕДУПРЕЖДЕНИЕ: добавление стандартного заголовка [...] не разрешено ...».
Привет, спасибо, что сообщили об этом. Я добавил проблему для этого вопроса: https://github.com/restlet/restlet-framework-java/issues/1132. Я посмотрю позже. –
Привет, исправление было разработано, ожидая подтверждения. –
Эй! Отлично, похоже, это устранит проблему. С нетерпением жду этого. – Max