操作HTTP响应

更改默认的Content-Type

result的内容类型会被自动推断通过作为响应体的Java值.
举个例子:

Result textResult = ok("Hello World!");

会自动设置 Content-Type 响应头为text/plain,当结果是:

JsonNode json = Json.toJson(object);
Result jsonResult = ok(json);

时 Content-Type 响应头是application/json.
这相当有用,但是有时候你可能会想改变它.使用 as(newContentType)方法来创建不同的Content-Type 响应头在相同的结果:

Result htmlResult = ok("

Hello World!

").as("text/html");

设置HTTP响应头

public Result index() {
             response().setContentType("text/html");
             response().setHeader(CACHE_CONTROL, "max-age=3600");
             response().setHeader(ETAG, "xxx");
             return ok("

Hello World!

"); }

注意:设置一个HTTP 响应头会自动覆盖前一个

设置和丢弃 cookies

Cookies 是一个特殊的HTTP headers,但是Play提供一系列的方法帮助你更简单的使用.
你可以很容易的添加Cookie到HTTP响应:

response().setCookie("theme", "blue");

如果你需要设置更多的细节,包括 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");

如果您设置cookie时,设置了一个路径或域名,请确保您丢弃Cookie的时候,使用相同的名字,路径和域名.浏览器将会匹配相同的名称,路径和域名.

为文本结果指定一个字符编码

对于一个基于文本的HTTP响应正确的处理字符编码是非常重要的.Play默认使用utf-8作为字符编码.
这个编码不止用于将响应发送的socket包中的字节转换,还会在 Content-Type 头中添加 ;charset=xxx.
编码可以在你生成Result的时候指定:

public Result index() { 
        return ok("

Hello World!

", "iso-8859-1").as("text/html; charset=iso-8859-1"); }

你可能感兴趣的:(操作HTTP响应)