2012-12-23 2 views
6

Ich bin auf der Suche nach dem besten Weg, um lockenartige Funktionalität in Dart zu bekommen. Zum Beispiel, wie Sie den google.com-Webinhalt abrufen und als Beispiel ausgeben.Curl wie Funktionalität in Dart

fand ich, dass ich es über the shell as shown here nennen kann, aber das ist nicht wie der ideale Ansatz scheint:

import 'dart:io'; 

main() { 
    var f = new File(new Options().executable); 
    Process.start('curl', 
       ['--dump-header', '/tmp/temp_dir1_M8KQFW/curl-headers', '--cacert', 
       '/Users/ager/dart/dart/third_party/curl/ca-certificates.crt', '--request', 
       'POST', '--data-binary', '@-', '--header', 'accept: ', '--header', 'user-agent: ' , 
       '--header', 'authorization: Bearer access token', '--header', 
       'content-type: multipart/form-data', '--header', 
       'content-transfer-encoding: binary', '--header', 
       'content-length: ${f.lengthSync()}', 'http://localhost:9000/upload']).then((p) { 
    f.openInputStream().pipe(p.stdin); 
    p.stdout.pipe(stdout); 
    p.stderr.pipe(stderr); 
    p.onExit = (e) => print(e); 
    }); 
} 

ich an der API auch sah und nichts, mir zu helfen hier finden kann.

Antwort

8

Dart IO-Bibliothek kommt mit einem HttpClient, was Sie suchen. Sie sollten jedoch wahrscheinlich stattdessen das Pub-Paket http verwenden. Fügen Sie es Ihrer Abhängigkeiten Datei:

dependencies: 
    http: any 

Run pub install und dann einfach:

import 'package:http/http.dart' as http; 

main() { 
    http.read('http://google.com').then((contents) { 
    print(contents); // Here we output the contents of google.com. 
    }); 
}