我正在编写一个播放控制器,它应该调用另一个Web服务并逐字地返回其结果 - 相同的响应代码,相同的标题,相同的主体。但似乎Controller的编写使得我必须指定一个显式的返回码。我试过获得ahcResponse,但这似乎没有提供明显的解决方案。
这就是我现在所拥有的:
def route(name: String, command: String) = Action {
Async {
(
WS.url("someurl").get().map {
(
response => Ok(response.body))
})
}
}
但是,这总是会返回“OK”状态,如果出现错误,它会将错误HTML作为文本提取到正文中。
如何将WS调用的结果转发回调用者?
答案 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...")
}