Play framework 2.0 -调用WEB服务

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

猜你喜欢

转载自shenbai.iteye.com/blog/1502677