getData() async {
http.Response response = await http.get('https://www.example.com/);
print(response.body);
}
上面的函数用于获取页面的HTML代码,但在某些情况下会失败。该功能有时永远不会完成,它永远等待得到响应(例如,如果应用程序是打开的,而互联网是关闭的,即使当它打开,它永远不会连接)。在这种情况下,有没有什么方法可以重新尝试?
我尝试了HTTP重试包,但它给了我15+错误。
4条答案
按热度按时间luaexgnf1#
示例代码说明如何做到这一点:
ugmeyewa2#
您可以使用http包中的RetryPolicy来重试连接,只需创建自己的类并继承RetryPolicy并覆盖这些函数,如以下示例,然后使用www.example.com创建一个ClientHttpClientWithInterceptor.build并添加您的自定义retryPolicy作为参数,这将重试您的请求多次,直到满足条件,如果不满足,它将停止重试。
然后创建并使用客户端来发出请求。
如果满足您写入的条件,它将自动重试请求。
还有一个软件包来检查互联网连接,如果你的问题,请参阅connectivity
txu3uszq3#
你可以像在同步代码中一样在异步函数中使用try-catch块。也许您可以在函数中添加某种错误处理机制,并在出现错误时重试该函数?这里有一些关于这个的文件。
文档示例:
您还可以按照this github issue.捕获特定的异常
编辑:这可能也有帮助。
当我们在这方面的时候,看看here有一个函数,它可以尝试异步操作,无论你需要多少次。
1zmg4dgp4#
您可以捕获异常并根据需要继续重试。
下面是一个函数: