Restlet框架应该处理自动内容协商;但是,它似乎没有做好。
当客户端发送带有值的Accept标头的HTTP GET请求时,Restlet不会自动协商内容。
有谁知道如何处理Accept标头?
答案 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