我希望你能帮助我。我对飞镖并不完全陌生,因为我已经设置了颤振应用程序的主要部分。但是我的应用程序需要一个后端服务器,我认为 dart 服务器会很方便,因为我喜欢 dart 语言。于是我搭建了一个运行 Ubuntu 的普通在线服务器,并开始使用 VS Code SSH Remote 进行开发。我需要我的服务器刷新和重组其存储的数据,以便我的应用程序可以轻松获取数据。昨天我尝试下载必要的 .csv 文件,一切正常。今天,HTTPClient 继续加载。
我的代码:
refreshData() {
refresh() async {
print('refreshing data...');
var client = await Client()
.send(Request('GET', Uri.parse(articlesUrl)))
.timeout(Duration(seconds: 45));
int total = client.contentLength ?? 0;
int received = 0;
client.stream.listen((value) {
bytes.addAll(value);
received += value.length;
print('Received: ' + received.toString() + 'of: ' + total.toString());
}).onDone(() async {
await File('assets/data/articles.csv').writeAsBytes(bytes);
print('file written.');
});
}
refresh();
const timer = Duration(minutes: 30);
Timer.periodic(timer, (Timer t) async {
refresh();
});
}
代码一直执行到 print('refreshing data...') 正常,然后我完全不知道会发生什么。即使超时功能不起作用,监听功能也不起作用。但我没有抛出任何异常或错误。我也尝试将 Dio 包作为 HTTP 客户端,但它保持不变。另一台服务器上的文件可以正常访问,就像以前一样,curl 报告我从中获取文件的服务器没有问题。端口空闲,HTTPServer 报告没有问题。
有人有同样的问题吗,或者你知道如何正确调试,所以我可以看到 HTTPClient 在做什么?