1
我試圖用restlet創建HEAD響應。不幸的是,有一個@Get
註釋,但restlet作者states,您必須使用@Get
,然後比較方法。 正如documentation/specification所說,不存在主體,但只有消息頭。如何構建具有restlet的HEAD響應的消息頭
現在,如何創建一個郵件頭將被髮送到服務器,因爲下面的代碼不能正常工作,它會發送這個頭:HTTP/1.1 204沒有內容,內容長度:0
protected void addResponseHeader(String name, String value) {
Form responseHeaders = (Form)getResponse().getAttributes().get(HeaderConstants.ATTRIBUTE_HEADERS);
if (responseHeaders == null) {
responseHeaders = new Form();
getResponse().getAttributes().put(HeaderConstants.ATTRIBUTE_HEADERS, responseHeaders);
}
responseHeaders.add(new Parameter(name, value));
}
服務器端的具體代碼:
@Get
public void execute() {
if (Method.HEAD.equals(getMethod())) {
//optional: getResponse().getEntity().setMediaType(MediaType.TEXT_PLAIN);
getResponse().setStatus(Status.SUCCESS_OK, "hello head");
addResponseHeader("X-my-header", "value");
}
}
客戶端代碼:
@Test
public void head() {
Request request = new Request(Method.HEAD, url);
Response response = query(request);
assertEquals(Status.SUCCESS_OK, response.getStatus());
Form form = (Form)response.getAttributes().get(HeaderConstants.ATTRIBUTE_HEADERS);
assertEquals("value", form.getFirstValue("X-my-value")); // does fail because it is null
}
嗨傑羅姆,GET工程,但不是頭。那麼我錯了什麼,只是說正確實施並不是那麼有用。我在網上搜索了很多,但沒有找到答案。爲什麼是HEAD迴應204沒有內容,內容長度:0?我的自定義標題去了哪裏? – Dag 2011-06-18 20:04:49
嗨達格,看起來像一個錯誤。你能輸入一個問題嗎? http://www.restlet.org/community/issues – 2011-07-02 15:47:26