Dart Http 包请求超时
Posted
技术标签:
【中文标题】Dart Http 包请求超时【英文标题】:Dart Http Package request timeout 【发布时间】:2020-03-16 21:12:35 【问题描述】:在我的颤振应用程序中使用http
包时,我遇到了一个小问题。我正在本地主机上进行测试,当我使用 http.post 在数据库中发布某些内容时,当服务器未运行时,它不会在默认时间(即我认为是 60 秒)返回响应。当我在超时内启动 apache 和 mysql 服务时,它会将数据发布到服务器中。有什么办法可以减少dart http包中http请求的超时时间?或者有什么替代方案吗?
【问题讨论】:
【参考方案1】:这是 http 包
final response = await http.post(Url).timeout(Duration(seconds: 5));
这是 Dio 包(建议测试此包)
BaseOptions options = new BaseOptions(
baseUrl: baseUrl,
connectTimeout: 10000, //10 seconds
receiveTimeout: 10000,
);
Dio dio = new Dio(options);
Response<dynamic> response = await dio.post(url, data: mapData);
【讨论】:
【参考方案2】:您有两种选择。
减少 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
【讨论】:
以上是关于Dart Http 包请求超时的主要内容,如果未能解决你的问题,请参考以下文章
在 .net Rider IDE 中恢复解决方案的 nuget 包:无法下载包 `x` 对 GET `x` 的 HTTP 请求在 100000 毫秒后超时