#Play的WS API
有时候你需要在Play应用中调用其他HTTP服务。Play通过它的play.libs.WS库提供了支持,它可以提供一种方式进行异步HTTP调用。
play.libs.WS产生的调用应当返回Promise<Ws.Response>类型,同Play的异步机制,你可以稍后处理它。
1.生成HTTP调用
要产生一个HTTP请求,首先你要使用WS.url()指定URL,然后得到一个生成器来指定HTTP选项,例如设置头等。
最后调用与你想要的HTTP相关的方法:
Promise<WS.Response> homePage = WS.url("http://mysite.com").get();
或者:
Promise<WS.Response> result = WS.url("http://localhost:9001").post("content");
2.获取HTTP请求结果
调用是异步的,你需要把它当作Promise<WS.Response>来取得实际内容。你可以组织多个
Promise最终以一个可以直接被Play服务器处理的Promise<Result>结束。
import play.libs.F.Function; import play.libs.WS; import play.mvc.*; public class Controller extends Controller { public static Result feedTitle(String feedUrl) { return async( WS.url(feedUrl).get().map( new Function<WS.Response, Result>() { public Result apply(WS.Response response) { return ok("Feed title:" + response.asJson().findPath("title")); } } ) ); } }