Restlet如何处理HTTP Accept标头?

时间:2009-06-02 06:31:45

标签: restlet

Restlet框架应该处理自动内容协商;但是,它似乎没有做好。

当客户端发送带有值的Accept标头的HTTP GET请求时,Restlet不会自动协商内容。

有谁知道如何处理Accept标头?

1 个答案:

答案 0 :(得分:8)

Restlet API广泛支持“Accept”标头。通过Request.getClientInfo().getAcceptedMediaTypes()List<Preference<MediaType>>方法解析和提供信息。

现在,为了自动为您协商内容,Restlet引擎需要有关于可用变体的信息。这是Restlet 1.1中的目的org.restlet.resource.Resource class以及正在开发的Restlet 2.0版本中的新org.restlet.resource.ServerResource类。

在Restlet 1.1中,您创建了Resource的子类,声明如下变体:

   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(...)

     ...
}

祝你好运, 杰罗姆

PS:请使用我们的邮件列表以备将来提问并查看档案: http://www.restlet.org/community/lists