我需要自己调用 w WS 来处理 HEAD 请求,无论如何它总是在重定向后得到响应(所以最后我总是得到 200 状态而不是 301)
在文档中写到我应该ws.followRedirects=false
在我的 application.conf 中设置,无论如何它似乎不起作用。我可以看到 Scala 版本正在尝试读取此配置,但是我有一个 Java 控制器。现在也不能切换到 2.1,我可以看到有专门的设置器来解决这个问题。
有任何解决方法吗?
我需要自己调用 w WS 来处理 HEAD 请求,无论如何它总是在重定向后得到响应(所以最后我总是得到 200 状态而不是 301)
在文档中写到我应该ws.followRedirects=false
在我的 application.conf 中设置,无论如何它似乎不起作用。我可以看到 Scala 版本正在尝试读取此配置,但是我有一个 Java 控制器。现在也不能切换到 2.1,我可以看到有专门的设置器来解决这个问题。
有任何解决方法吗?
您可以从 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());
}
});
}
}
您仍然需要添加ws.followRedirects=false
您的 application.conf。