是否有更优雅的方式来处理Dart中的Http Request正文内容?

时间:2013-02-26 20:11:00

标签: dart

随着新dart:io库的发布,为了从HttpRequest读取数据,我们现在需要:

  

听取正文处理数据并通知其完成情况。

为了实现这一目标,我一直在使用类似于以下的内容来获取请求中的所有数据(取自dart:io测试):

List<int> body = new List<int>();
request.listen(body.addAll, onDone: () {
  var str = new String.fromCharCodes(body);
  // Now do something with the string of data
});

是否有某种方法可以使用transform和/或StringDecoders来提供构造结果。我能想到的唯一方法是,我仍然需要创建一个StringBuffer并使用writeAll来确保所有数据在它不是一次全部到达的情况下传递,并且在使用缓冲区中的字符串之前仍然调用onDone。

所以我猜最终的问题是:是否有某些方法可以使用HttpRequest(或者所有实际的任何Stream)而无需缓冲/构建结果,只需传递一个接收整个内容的回调或处理程序?

1 个答案:

答案 0 :(得分:0)

我没试过这个,但我认为你应该可以使用StringDecoder,toList()和join()来获取整个身体:

request.transform(new StringDecoder()).toList().then((data) {
  var body = data.join('');
  print(body);
}