1

Restlet 框架应该处理自动内容协商;但是,它似乎没有正确地做到这一点。

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

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

4

1 回答 1

8

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

现在,为了自动为您协商内容,Restlet 引擎需要有关可用变体的信息。这是org.restlet.resource.Resource classRestlet 1.1 的目的,也是正在开发的 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

于 2009-06-03T12:13:23.550 回答