【发布时间】:2020-07-29 08:14:01
【问题描述】:
我正在尝试从 Internet 上的 csv 文件中获取数据: https://covid.ourworldindata.org/data/owid-covid-data.csv
如果您点击它,您可能已经注意到它会自动下载,我认为这是问题所在。
当我在 dart 中使用 http library 来获取这些数据时,我一开始只取回了其中的一小部分。 response.statusCode 仍然等于 200,其他一切都按预期工作。
我认为自动下载是问题的一部分,但我不知道如何解决这个问题
代码如下:
import 'package:http/http.dart' as http;
...
main(){
String url = 'https://covid.ourworldindata.org/data/owid-covid-data.csv';
http.Response response = await http.get(url);
print(response.body);
}
【问题讨论】:
-
仅供参考,这取决于浏览器 - Chrome 会下载它,而 Safari 会在标签页中打开
-
它应该正在下载文件,
response.bodyAsBytes将有一个 Uint8 列表,其中包含文件作为字节,使用File类写入文件,或使用 http.readBytes(url)跨度> -
print总是截断长字符串。您可能在内存中有整个 csv,但由于截断,您只能看到第一位。试试print(response.body.length)来证明这一点。 -
@mangusta 好的,我想这不是问题
-
@RichardHeap 是的,我检查了长度,它确实给了我完整的数据。我猜这是我的愚蠢错误。我来自 python,在那里我可以轻松打印诸如此类的长字符串。