我有一个方法(在播放框架中),我将调用我将调用web服务但在播放2.4.0M2版本时,我得到的响应包含在一个承诺中。
因此该方法返回执行它的正常工作而不等待web服务完成。这使得前一个流程出现了一些问题。所以现在我必须让方法在我调用的同一行上等待webservice并在webservice返回一些响应后继续从下一行执行。
有没有办法做到这一点。
我的代码:
Promise<WSResponse> response = WS.url(SignConstants.SIGN_DOCUMENT_URL).post(new File(inputfilepath));
return response.map(new Function<WSResponse, Boolean>() {
public Boolean apply(WSResponse response) throws Exception {
//some code here
return Boolean.TRUE;
}
});
答案 0 :(得分:0)
你从哪里调用这个方法?在为请求提供服务的控制器方法中?如果是的话你应该返回一个
Promise<Result>
而不是普通Result
。请参阅文档https://www.playframework.com/documentation/2.2.x/JavaAsync
答案 1 :(得分:0)
我自己找到了答案。
所有关于使用get方法指定超时作为参数。
<强>答案:强>
WSResponse response=WS.url(SignConstants.SIGN_DOCUMENT_URL)
.post(new File(inputfilepath)).get(10000);
其中我的结果没有包含诺言,所以我会得到我想要的输出。
无论如何,谢谢你们每个人......