您可以從Java調用Scala。方法wsHead
封裝了Scala代碼並僅從Java Play API傳遞對象。遷移到Play 2.1.0,您可以重構該方法。
package controllers;
import play.api.libs.ws.Response;
import play.api.libs.ws.WS$;
import play.libs.F;
import play.libs.WS;
import play.mvc.*;
public class Application extends Controller {
public static Result index() {
final String url = "http://localhost:80";
final F.Promise<WS.Response> responsePromise = wsHead(url);
return async(responsePromise.map(new F.Function<WS.Response, Result>() {
@Override
public Result apply(WS.Response response) throws Throwable {
return ok("got status: " + response.getStatus());
}
}));
}
private static F.Promise<WS.Response> wsHead(String url) {
return new F.Promise(WS$.MODULE$.url(url).head()).map(new F.Function<Response, WS.Response>() {
@Override
public WS.Response apply(Response o) throws Throwable {
return new WS.Response(o.getAHCResponse());
}
});
}
}
您仍然需要在您的application.conf中添加ws.followRedirects=false
。
您是否試過用Scala控制器?在2.0.4中,您可以混合使用而不會出現問題。 – 2013-02-27 10:50:59
不幸的是,我沒有斯卡拉的經驗,如果沒有其他選擇,我會這樣做。 – biesior 2013-02-27 10:57:04
那麼現在是時候學習Scala;)對不起,不知道問題可能是什麼。 – 2013-02-27 11:17:13