【问题标题】:Flutter response.body is emptyFlutter response.body 为空
【发布时间】:2021-03-04 14:40:53
【问题描述】:

我正在使用这个 API,我向这个网站发出一个 http 请求以检索我的数据

https://fantasy.premierleague.com/api/bootstrap-static/

第一次使用时,我无法检索任何数据,经过一些研究,我通过简单的flutter升级解决了这个问题(我不知道问题是什么,也不知道升级后为什么会解决),然后几天后我一直在做这个项目,问题又出现了,每次我尝试提出请求时都会得到一个空的身体

http.get("https://fantasy.premierleague.com/api/bootstrap-static/")

我正在使用此行获取响应值,然后尝试将其解码为 JSON 值,但发生此错误

exeption occured : FormatException: Unexpected end of input (at character 1)

我已经知道发生此错误是因为我试图解码一个空正文,但我不明白为什么会发生这种情况

注意:我尝试了多个其他 API url,它们都可以正常工作!

【问题讨论】:

  • 检查 API 是否返回正确的数据,可能使用 POSTMAN 或 CURL..
  • @JoyTerence 我在 POSTMAN 上试过了,它工作正常

标签: api flutter dart


【解决方案1】:

如果您使用 cURL 转储标头,这就是我得到的:

HTTP/1.1 301 Moved Permanently
Server: Varnish
Retry-After: 0
Location: https://fantasy.premierleague.com/api/bootstrap-static/
Content-Length: 0
Accept-Ranges: bytes
Date: Sat, 21 Nov 2020 15:58:17 GMT
Via: 1.1 varnish
Connection: close
X-Served-By: cache-bom4748-BOM
X-Cache: HIT
X-Cache-Hits: 0
X-Timer: S1605974297.185069,VS0,VE0

HTTP/2 200 
server: Varnish
retry-after: 0
content-type: application/json
accept-ranges: bytes
date: Sat, 21 Nov 2020 15:58:17 GMT
via: 1.1 varnish
x-served-by: cache-bom4732-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1605974297.371758,VS0,VE0
content-length: 0

请求被重定向,但在 dart/flutter 中似乎没有办法解决这个问题。

检查这些答案:

https://stackoverflow.com/a/54832309/6156989

https://stackoverflow.com/a/56862713/6156989

【讨论】:

  • 感谢您的帮助,如果我找到解决方案,我会尽力解决并发布解决方案?
【解决方案2】:

所以我最终切换到flutter master并且代码运行良好,我仍然不知道为什么它不能在stable上运行但在master上运行。无论如何,如果有人遇到这个问题,只需切换到 master,它应该可以正常工作。谢谢。

【讨论】:

    【解决方案3】:

    你应该在 http.get() 之前添加 await 关键字,因为它是一个异步函数

    await http.get("https://fantasy.premierleague.com/api/bootstrap-static/")
    

    编辑: 以下代码已经过测试并且可以运行

    import 'package:http/http.dart' as HTTP;
    import 'dart:convert';
    
      fetchData() async {
        var res = await http
            .get("https://fantasy.premierleague.com/api/bootstrap-static/");
        var jsonData = jsonDecode(res.body);
        print(jsonData);
      }
    

    【讨论】:

    • 这没有用,抱歉。
    • 此代码对我不起作用,我不明白为什么!
    • 我真的很抱歉,但我从字面上复制粘贴了您的代码,我收到此错误 Unhandled Exception: FormatException: Unexpected end of input (at character 1) from jsonDecode(res.body) 因为正文是空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多