import 'dart:io';
import 'dart:async';
void main() {
HttpClient client = new HttpClient();
client.getUrl(Uri.parse('http://api.dartlang.org/docs/releases/latest/dart_io/HttpClientResponse.html'))
.then((HttpClientRequest request) => request.close())
.then((HttpClientResponse response) {
response.listen(print, onError: (e) {
print('error: $e');
});
});
}
上面的代码不起作用,使用类似的方法来监听pipe
和fold
也会引发异常=> Breaking on exception: The null object does not have a method 'cancel'.
更新
以下是连接本地计算机时的代码示例。
import 'dart:io';
import 'dart:async';
void main() {
HttpServer.bind('127.0.0.1', 8080)
.then((HttpServer server) {
server.listen((HttpRequest request) {
File f = new File('upload.html');
f.openRead().pipe(request.response);
});
HttpClient client = new HttpClient();
client.getUrl(Uri.parse('http://127.0.0.1:8080'))
.then((HttpClientRequest request) => request.close())
.then((HttpClientResponse response) {
response.listen(print, onError: (e) {
print('error: $e');
});
});
});
}
首先输出字节然后抛出异常Breaking on exception: The null object does not have a method 'cancel'.
Dart编辑器版本0.7.2_r27268。 Dart SDK版本0.7.2.1_r27268。在Windows 64位计算机上。
答案 0 :(得分:0)
您的示例适用于我的计算机。
请指定您的Dart版本和其他有助于调试问题的系统属性。
答案 1 :(得分:0)
所呈现的代码看起来很好,我无法在0.7.2.1和前沿再现错误。您知道您的网络是否有任何类型的代理设置可能导致直接HTTP连接失败?您可以尝试连接到本地计算机上的服务器。如果仍然失败,我建议在https://code.google.com/p/dart/issues/list上打开一个包含详细信息的错误。