2009-06-02 2 views
1

Платформа Restlet должна обрабатывать автоматическое согласование содержимого; однако, похоже, что это не так.Как Remlet обрабатывает заголовок HTTP Accept?

Когда клиент отправляет и HTTP-запрос GET с заголовком Accept со значением, Restlet автоматически не согласовывает содержимое.

Кто-нибудь знает, как обрабатывается заголовок Accept?

ответ

8

API-интерфейс Restlet имеет обширную поддержку заголовка «Accept». Информация анализируется и доступна по методу Request.getClientInfo().getAcceptedMediaTypes(): List<Preference<MediaType>>.

Теперь, чтобы автоматически согласовывать содержимое для вас, движок Restlet должен иметь информацию о доступных вариантах. Это цель org.restlet.resource.Resource class в Restlet 1.1 и новый org.restlet.resource.ServerResource класс в версии Restlet 2.0.

В Restlet 1.1, вы создаете подкласс ресурсов, объявить варианты, как это:

getVariants().add(new Variant(MediaType.TEXT_PLAIN)); 

    getVariants().add(new Variant(MediaType.APPLICATION_XML)); 

Затем переопределить represent(Variant) метод, как это:

public Representation represent(Variant){ 

    if(MediaType.TEXT_PLAIN.equals(variant.getMediaType()){ 

    ... 

    else if(...) 

    ... 
} 

С наилучшими пожеланиями, Jerome

PS: пожалуйста, используйте наш список рассылки для будущих вопросов и посмотрите в архивах: http://www.restlet.org/community/lists

+0

Я немного исправлю ваш ответ: public Представление представляет (вариант варианта) {if (MediaType.TEXT_PLAIN.isCompatible (variant.getMediaType()) {... else if (...) ...} Итак, вместо usos methos equals() используйте isCompatible() – Dani