1
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 位机器上。

4

2 回答 2

0

提供的代码看起来不错,我无法在 0.7.2.1 和前沿重现错误。您知道您的网络是否有任何类型的代理设置可能导致直接 HTTP 连接失败?您可以尝试连接到本地计算机上的服务器。如果仍然失败,我建议在https://code.google.com/p/dart/issues/list上打开一个带有详细信息的错误。

于 2013-09-16T06:53:09.850 回答
0

您的示例适用于我的机器。

请指定您的 Dart 版本和其他有助于调试问题的系统属性。

于 2013-09-14T19:24:13.440 回答