【问题标题】:How do I add a timeout if the http request fails?如果 http 请求失败,如何添加超时?
【发布时间】:2019-05-21 16:47:15
【问题描述】:

我有一个从 Firebase 请求 json 数据的应用。我已经为不成功的代码实现了一个条件,但是当缺少连接时,请求不会超时。有没有办法添加超时以便出现 AlertDialog?

return http
    .post('https://flutter**********.com/products.json',
        body: json.encode(productData))
    .then((http.Response response) {
      if(response.statusCode != 200 && response.statusCode != 201) {
        _isLoading = false;
        notifyListeners();
        return false;
      }

false 在收到不同的 statusCode 时返回,这反过来会显示 AlertDialog 允许用户重试。它在代码被故意破坏时出现,但在缺乏连接性时不会出现。

谢谢

【问题讨论】:

    标签: http dart flutter


    【解决方案1】:

    如果请求超时(例如因为没有连接),则服务器没有响应。试试这个:

    try {
        http.post('https://flutter**********.com/products.json',
        body: json.encode(productData))
        .then((http.Response response) {
            if(response.statusCode != 200 && response.statusCode != 201) {
                _processTimeout();
                return false;
            };
    } on TimeoutException catch (_) {
        _processTimeout();
        return false;
    }
    

    _processTimeout() 中添加任何需要发生的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2019-08-12
      相关资源
      最近更新 更多