【问题标题】:Dart Http Package request timeoutDart Http 包请求超时
【发布时间】:2020-03-16 21:12:35
【问题描述】:

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

【问题讨论】:

    标签: http flutter dart


    【解决方案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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-25
        • 2011-11-05
        • 2010-12-12
        • 2014-04-25
        • 1970-01-01
        相关资源
        最近更新 更多