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 Editor バージョン 0.7.2_r27268。Dart SDK バージョン 0.7.2.1_r27268。Windows 64 ビット マシン上。