Play WS API
有时候我们需要在Play应用中调用外部HTTP服务。Play通过play.api.libs.ws.WS库提供支持,它提供了一种异步HTTP调用的方法。
任何play.api.libs.ws.WS的调用將返回Promise[play.api.libs.ws.Response],稍候我们可以用Play提供的异步机制处理。
使用HTTP调用
使用WS.url()指定一个URL发送一个HTTP请求. 你將得到一个构建器,可用它设置一些HTTP选项,如头信息. 通过调用一个对应的HTTP方法结束.
val homePage: Promise[ws.Response] = WS.url("http://mysite.com").get()
或者
val result: Promise[ws.Response] = {
WS.url("http://localhost:9001/post").post("content")
}
检索HTTP响应结果
调用是以异步的方式,你需要以Promise[ws.Response]获取结果。你可以將多个promises组合以Promise[Result]结束, 让它直接由Play服务器处理.
def feedTitle(feedUrl: String) = Action {
Async {
WS.url(feedUrl).get().map { response =>
Ok("Feed title: " + (response.json \ "title").as[String])
}
}
}