更改默認(rèn)的Content-Type
result的內(nèi)容類型會被自動推斷通過作為響應(yīng)體的Java值.
舉個例子:
Result textResult = ok("Hello World!");
會自動設(shè)置 Content-Type 響應(yīng)頭為text/plain,當(dāng)結(jié)果是:
JsonNode json = Json.toJson(object);
Result jsonResult = ok(json);
時 Content-Type 響應(yīng)頭是application/json.
這相當(dāng)有用,但是有時候你可能會想改變它.使用 as(newContentType)方法來創(chuàng)建不同的Content-Type 響應(yīng)頭在相同的結(jié)果:
Result htmlResult = ok("<h1>Hello World!</h1>").as("text/html");
設(shè)置HTTP響應(yīng)頭
public Result index() {
response().setContentType("text/html");
response().setHeader(CACHE_CONTROL, "max-age=3600");
response().setHeader(ETAG, "xxx");
return ok("<h1>Hello World!</h1>");
}
注意:設(shè)置一個HTTP 響應(yīng)頭會自動覆蓋前一個
設(shè)置和丟棄 cookies
Cookies 是一個特殊的HTTP headers,但是Play提供一系列的方法幫助你更簡單的使用.
你可以很容易的添加Cookie到HTTP響應(yīng):
response().setCookie("theme", "blue");
如果你需要設(shè)置更多的細(xì)節(jié),包括 path,domain,expiry你可以重載方法:
response().setCookie(
"theme", // name
"blue", // value
3600, // maximum age
"/some/path", // path
".example.com", // domain
false, // secure
true // http only
);
拋棄一個之前存儲在瀏覽器的Cookie:
response().discardCookie("theme");
如果您設(shè)置cookie時,設(shè)置了一個路徑或域名,請確保您丟棄Cookie的時候,使用相同的名字,路徑和域名.瀏覽器將會匹配相同的名稱,路徑和域名.
為文本結(jié)果指定一個字符編碼
對于一個基于文本的HTTP響應(yīng)正確的處理字符編碼是非常重要的.Play默認(rèn)使用utf-8作為字符編碼.
這個編碼不止用于將響應(yīng)發(fā)送的socket包中的字節(jié)轉(zhuǎn)換,還會在 Content-Type 頭中添加 ;charset=xxx.
編碼可以在你生成Result的時候指定:
public Result index() {
return ok("<h1>Hello World!</h1>", "iso-8859-1").as("text/html; charset=iso-8859-1");
}