Dart Http包请求超时

时间:2019-11-21 02:35:56

标签: http flutter dart

在flutter应用程序中使用http包时,遇到了一个小问题。我正在localhost上进行测试,当我使用http.post在数据库中发布某些内容时,当服务器未运行时,它不会在默认时间(即60秒)内返回响应。当我在超时时间内启动apache和mysql服务时,它将数据发布到服务器中。有什么方法可以减少dart http包中的http请求超时?还是有其他解决方案?

2 个答案:

答案 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
}