Scala Play框架向http请求添加头

Scala Play框架向http请求添加头,scala,playframework-2.6,Scala,Playframework 2.6,我一直在尝试让WS向json api发出请求。到目前为止,我无法使utf-8正确渲染,记录如下: 我现在尝试将字符集添加到请求的http头中。但是,我似乎无法做到这一点。如果我运行以下命令: val request = ws.url("http://myserver.org") request.withHttpHeaders("charset" -> "utf-8") println("request headers: " request.headers) request.get().m

我一直在尝试让WS向json api发出请求。到目前为止,我无法使utf-8正确渲染,记录如下:

我现在尝试将字符集添加到请求的http头中。但是,我似乎无法做到这一点。如果我运行以下命令:

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))
这将产生以下结果:

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))
谁能诊断出我做错了什么?为什么请求头映射为空?我遵循了2.6版的惯例,它非常简单

带有HttpHeaders的方法
返回一个新的
请求
,您将丢弃该请求

尝试按以下方式更改代码:

val request = ws.url("http://myserver.org").withHttpHeaders("charset" -> "utf-8")

游戏框架的
版本=2.8.1

必要进口:

import play.api._
import play.api.mvc._
import play.api.http.HttpEntity
具有请求头的示例方法:

  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"))
        )
      }
  }