Play Framework 添加 headers 到 http 请求
Play Framework adding headers to http request
我一直在尝试让 WS 向 json api 发出请求。到目前为止,我无法让 utf-8 正确呈现,记录在此处:Play Framework WS losing unicode chars from external api
我现在正在尝试将字符集添加到请求的 http headers。但是,我似乎无法做到这一点。如果我 运行 以下内容:
val request = ws.url("http://myserver.org")
request.withHttpHeaders("charset" -> "utf-8")
println("request headers: " request.headers)
request.get().map { response =>
println("response headers: " + response.headers)
...
这将生成以下内容:
request headers: Map()
response headers: Map(Date -> Buffer(Tue, 07 Nov 2017 20:11:58 GMT), Server -> Buffer(Jetty(8.1.5.v20120716)), Content-Type -> Buffer(application/json), Cache-Control -> Buffer(private, must-revalidate, max-age=0), Content-Length -> Buffer(9822), X-Content-Type-Options -> Buffer(nosniff))
任何人都可以诊断出我做错了什么吗?为什么请求 header 映射为空?我遵循了 2.6 scala doc
的约定
很简单。
方法 withHttpHeaders
returns 一个新的 request
,您刚刚丢弃它。
尝试像这样更改您的代码:
val request = ws.url("http://myserver.org").withHttpHeaders("charset" -> "utf-8")
使用 version = 2.8.1
Play Framework:
必要的进口:
import play.api._
import play.api.mvc._
import play.api.http.HttpEntity
带有请求的示例方法 headers:
def index() = Action { implicit request: Request[AnyContent] => {
val (status, message) = report.renderReportsJson
// Adding headers for dev testing
if (status) {
Result(
header = ResponseHeader(200, Map("Access-Control-Allow-Origin" -> "*")),
body = HttpEntity.Strict(ByteString(message), Some("text/plain"))
)
}
else
{
Result(
header = ResponseHeader(501, Map("Access-Control-Allow-Origin" -> "*")),
body = HttpEntity.Strict(ByteString(message), Some("text/plain"))
)
}
}
我一直在尝试让 WS 向 json api 发出请求。到目前为止,我无法让 utf-8 正确呈现,记录在此处:Play Framework WS losing unicode chars from external api
我现在正在尝试将字符集添加到请求的 http headers。但是,我似乎无法做到这一点。如果我 运行 以下内容:
val request = ws.url("http://myserver.org")
request.withHttpHeaders("charset" -> "utf-8")
println("request headers: " request.headers)
request.get().map { response =>
println("response headers: " + response.headers)
...
这将生成以下内容:
request headers: Map()
response headers: Map(Date -> Buffer(Tue, 07 Nov 2017 20:11:58 GMT), Server -> Buffer(Jetty(8.1.5.v20120716)), Content-Type -> Buffer(application/json), Cache-Control -> Buffer(private, must-revalidate, max-age=0), Content-Length -> Buffer(9822), X-Content-Type-Options -> Buffer(nosniff))
任何人都可以诊断出我做错了什么吗?为什么请求 header 映射为空?我遵循了 2.6 scala doc
的约定很简单。
方法 withHttpHeaders
returns 一个新的 request
,您刚刚丢弃它。
尝试像这样更改您的代码:
val request = ws.url("http://myserver.org").withHttpHeaders("charset" -> "utf-8")
使用 version = 2.8.1
Play Framework:
必要的进口:
import play.api._
import play.api.mvc._
import play.api.http.HttpEntity
带有请求的示例方法 headers:
def index() = Action { implicit request: Request[AnyContent] => {
val (status, message) = report.renderReportsJson
// Adding headers for dev testing
if (status) {
Result(
header = ResponseHeader(200, Map("Access-Control-Allow-Origin" -> "*")),
body = HttpEntity.Strict(ByteString(message), Some("text/plain"))
)
}
else
{
Result(
header = ResponseHeader(501, Map("Access-Control-Allow-Origin" -> "*")),
body = HttpEntity.Strict(ByteString(message), Some("text/plain"))
)
}
}