在flutter应用程序中使用http包时,遇到了一个小问题。我正在localhost上进行测试,当我使用http.post在数据库中发布某些内容时,当服务器未运行时,它不会在默认时间(即60秒)内返回响应。当我在超时时间内启动apache和mysql服务时,它将数据发布到服务器中。有什么方法可以减少dart http包中的http请求超时?还是有其他解决方案?
答案 0 :(得分:7)
我在http.post中测试超时,它对我有用
final response = await http.post(Url).timeout(Duration(seconds: 5));
我希望它对您有用
答案 1 :(得分:0)
您有两个选择。
减少HttpClient上的超时时间
final client = new HttpClient();
client.connectionTimeout = const Duration(seconds: 10);
这将适用于同一客户的所有请求。如果请求超过此超时时间,则会抛出SocketException
。
设置每个请求的超时时间
您可以使用Future.timeout
方法在任何Future上设置超时。
try {
..
final request = await client.get(...);
final response = await request.close().timeout(const Duration(seconds: 10));
// more code
} on TimeoutException catch (e) {
// handle timeout
}