在Java中,如何设置Restlet响应的头?

在Java中,如何设置Restlet响应的头?,java,http-headers,response,restlet,Java,Http Headers,Response,Restlet,我似乎不知道如何向restlet响应添加标题。当我查看Response对象中的可用方法时,我看到的只是setStatus、setEntity和setAttributes,但这些都没有告诉我如何在响应上设置自定义http头 例如,我有一个GET调用,返回如下内容: HTTP/1.1 200 OK Content-Type: text/json Content-Length: 123 Some-Header: the value Some-Other-Header: another value {

我似乎不知道如何向restlet响应添加标题。当我查看
Response
对象中的可用方法时,我看到的只是
setStatus
setEntity
setAttributes
,但这些都没有告诉我如何在响应上设置自定义http头

例如,我有一个
GET
调用,返回如下内容:

HTTP/1.1 200 OK
Content-Type: text/json
Content-Length: 123
Some-Header: the value
Some-Other-Header: another value

{
  id: 111,
  value: "some value this could be anything",
  diagnosis: {
    start: 12552255,
    end: 12552261,
    key: "ABC123E11",
    source: "S1",
  }
}
不管怎样。在
handleGet
方法中,我这样处理它:

final MediaType textJsonType = new MediaType("text/json");

@Override
public void handleGet() {
  log.debug("Handling GET...");
  final Response res = this.getResponse();

  try {
    final MyObject doc = this.getObj("hello", 1, "ABC123E11", "S1");
    final String docStr = doc.toString();

    res.setStatus(Status.SUCCESS_OK);
    res.setEntity(docStr, textJsonType);

    // need to set Some-header, and Some-other-header here!
  }
  catch(Throwable t) {
    res.setStatus(Status.SERVER_ERROR_INTERNAL);
    res.setEntity(new TextRepresentation(t.toString()));
  }
}

因为Restlet更多地是关于REST体系结构原则而不是HTTP,所以它尝试与协议无关,并且不直接公开HTTP头。但是,它们存储在响应的
org.restlet.http.headers
属性中(作为
表单
)。请注意,您只能以这种方式设置自定义标题,而不能设置标准标题(这些标题由框架直接处理,例如,
内容类型
取决于
表示形式
媒体类型)

请参见以下示例:
(链接内容也可从中获得)。

只是想知道为什么要覆盖
资源中的
handleGet
。在Restlet 1.1中,您可能希望使用
representation
(并让
handleGet
执行其逻辑(据我所知,包括内容类型协商);在Restlet 2中,您可能希望覆盖
get()
服务器资源中
或使用
@Get
注释。@布鲁诺,似乎我在互联网上看到的每个例子都有不同的做法。我将继续使用
表示
而不是handleGet。但是你知道我将如何处理
放置
删除
吗?在Restlet 1.1中,它是storeRepresentation
用于PUT,而
removeerepresentation
用于DELETE(请参阅)。您现在还可以使用Restlet 2(在这种情况下,它是
PUT(Representation)
DELETE()
,或者您可以使用
@PUT
@DELETE
注释)@E_net4,我又添加了一个链接。两个链接都断了,请你在回答中加个例子好吗?谢谢