从Play!2 WS调用返回未翻译的结果(在Scala中)

时间:2013-11-21 20:50:24

标签: web-services scala playframework-2.0

我正在编写一个播放控制器,它应该调用另一个Web服务并逐字地返回其结果 - 相同的响应代码,相同的标题,相同的主体。但似乎Controller的编写使得我必须指定一个显式的返回码。我试过获得ahcResponse,但这似乎没有提供明显的解决方案。

这就是我现在所拥有的:

def route(name: String, command: String) = Action {

  Async {
    (
      WS.url("someurl").get().map {
        (
          response => Ok(response.body))
      })
  }
}

但是,这总是会返回“OK”状态,如果出现错误,它会将错误HTML作为文本提取到正文中。

如何将WS调用的结果转发回调用者?

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式转发响应代码和正文:

WS.url(url)
  .get
  .map(response =>
    response.status match {
       // in case you want to do something special for ok
       // otherwise, pattern matching is not necessary
      case OK => Ok(response.body)
      case x => new Status(x)(response.body)
    })
  .recover {
    case ex: Throwable =>
      InternalServerError("some exception...")
  }