我正在使用scala中的Play框架开发一个应用程序.我必须在我的应用程序中处理以下用例.
对于从浏览器到播放服务器的特定请求,Play服务器应向某个外部服务器发出http请求(对于例如:somesite.com),并将该请求的响应发送回Web浏览器.
我编写了以下代码,将请求发送到控制器中的外部设备.
val holder = WS.url("http://somesite.com") val futureResponse = holder.get
现在我如何将收到的"somesite.com"的回复发回给浏览器?
WS中的Play文档中有一个示例,在控制器中使用 ; 我已根据您的情况调整了它:
def showSomeSiteContent = Action.async { WS.url("http://somesite.com").get().map { response => Ok(response.body) } }
要注意的关键一点是习惯使用map()
的Future
是你从后面get
调用-这里面的代码map
,一旦块将被执行Future
已成功完成.
在Action.async
"包装"讲述了游戏的框架,你会返回一个Future[Response]
和你想要它做必要等待事情的发生,因为在解释处理异步结果的文档.