我在使用Rest模板登录期间调用其他Web服务。托管服务的服务器未处于活动状态。我尝试登录,花了一些时间然后抛出异常连接失败。
我想设置一个计时器,例如: - 30秒。如果AsyncTask的doInBackground()
没有完成执行,我想取消它并显示一条消息,服务器不可用稍后再试。
现在,我使用了 CountDownTimer ,我调用了cancel()
来实现这一点,我几乎实现了它,但我感觉有些不对劲。因为在超时后doInBackground()
不会停止,它会在后台继续执行并在postExecute()
内打印一条日志消息。
任何人都可以建议一种方法来实现这一目标吗?
答案 0 :(得分:0)
配置RestTemplate
时,您可以配置timeout
// If using OkHttp, use OkHttpRequestFactory
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
clientHttpRequestFactory.setConnectTimeout(20000);
clientHttpRequestFactory.setReadTimeout(20000);
RestTemplate testTemplate = new RestTemplate(clientHttpRequestFactory);
在进行网络调用以向用户显示消息时,您可以try/catch
例外。