Java Play Framework 2.2.1:异步请求超时
我正在尝试获取http请求的内容/正文。这已经起作用了,但我无法使用Java Play Framework 2.2.1:异步请求超时,java,web-services,playframework,timeout,Java,Web Services,Playframework,Timeout,我正在尝试获取http请求的内容/正文。这已经起作用了,但我无法使用get方法获得超时 Logger.info( "before WS.url" ); String res = WS.url( "http://1.2.3.4" ).get() .map( new Function<WS.Response, String>() { @Override public String apply(WS.Respo
get
方法获得超时
Logger.info( "before WS.url" );
String res = WS.url( "http://1.2.3.4" ).get()
.map( new Function<WS.Response, String>() {
@Override
public String apply(WS.Response response) throws Throwable {
return response.getBody();
}
} )
.get( 5000, TimeUnit.MILLISECONDS );
Logger.info( "after WS.url = " + res );
return res;
Logger.info(“在WS.url之前”);
字符串res=WS.url(“http://1.2.3.4)获取()
.map(新函数(){
@凌驾
公共字符串apply(WS.Response-Response)抛出可丢弃的{
返回response.getBody();
}
} )
.get(5000,时间单位为毫秒);
Logger.info(“在WS.url=“+res”之后);
返回res;
在我的代码中,超时根本不起作用,我做错了什么或错过了什么?首先,你不应该调用。在播放应用程序中,你应该为你的操作返回映射的承诺,调用。get可能会让你陷入各种麻烦,比如死锁。除此之外,get的超时方法不起作用是什么意思?发生了什么事?我从未收到TimeoutException,尽管我设置了超时。我通过使用Scala和
Await.result
Await.result
解决了这个问题。result永远都不是正确的答案,如果使用它,很可能会导致死锁或更糟的生产。您应该始终map
或flatMap
未来,并从操作中返回异步结果。您曾经使用过这种方法吗?