#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"));
}
}
)
);
}
}