我正在使用 Spring 构建 REST 应用程序。我正在以 POJO 方式进行操作。现在我想处理一个花费太长时间的 GET 请求(可以说是因为用户的连接非常糟糕)。我能做些什么来处理这个问题(在 Spring 中),也许是在 5000 毫秒后取消请求?
我的方法:
所以我想需要某种超时。在我的谷歌浏览中,我发现有一个 HttpComponentsClientHttpRequestFactory 和一个所谓的 setConnectTimeout() 函数。我对此进行了测试,但我无法处理抛出的异常,因为它“深入内部”并且作为 AsyncTask 的致命异常传递出去。所以我失败了。
最佳做法是什么?有什么想法吗?
编辑: Spring 已经设置好,所以请只使用 Spring 解决方案。
编辑: 根据我的研究,这是不可能的。偶@Spring Forums 还没有答案:http://forum.springsource.org/showthread.php?135656-How-can-I-handle-GET-requests-that-are-taking-to-long
最佳答案
首先,不要使用 AsyncTask 来执行网络请求,因为如果您更改设备的方向,Activity 会被销毁并在重新创建后被销毁,但 AsyncTask 会保留对被销毁的 Activity 的引用并导致一些内存泄漏。
改用服务。我建议你使用 RoboSpice .它是一个使用 POJO 和 Spring 轻松发出 REST 请求的库。
如果您对自动本地和远程数据持久性管理感兴趣,可以使用 RestDroid处理那个(也用 POJO)。
这两个库都使用 RequestListeners 来管理您正在谈论的案例。当您的请求失败时,UI 会收到通知。
关于带有 Spring 的 Android REST 处理太长的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397277/