在Dart控制台应用程序中,是否有一个不需要DOM访问的HTTP请求库?

Tom*_*m C 5 http console-application httprequest dart

我开始尝试使用HTTPRequest,dart:html但很快意识到这在控制台应用程序中是不可能的.我做了一些谷歌搜索,但找不到我想要的东西(只找到HTTP服务器),是否有通过控制台应用程序发送正常HTTP请求的方法?

或者我是否必须使用套接字的方法并实现我自己的HTTP请求?

Dar*_*tle 10

IO库中有一个用于发出HTTP请求的HttpClient类:

import 'dart:io';

void main() {
  HttpClient client = new HttpClient();
  client.getUrl(Uri.parse("http://www.dartlang.org/"))
    .then((HttpClientRequest request) {
        return request.close();
      })
    .then(HttpBodyHandler.processResponse)
    .then((HttpClientResponseBody body) {
        print(body.body);
      });
}
Run Code Online (Sandbox Code Playgroud)

更新:由于HttpClient相当低级,并且对于这样简单的事情有点笨拙,因此核心Dart团队也制作了一个pub包,http简化了一些事情:

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

void main() {
  http.get('http://pub.dartlang.org/').then((response) {
    print(response.body);
  });
}
Run Code Online (Sandbox Code Playgroud)

我发现crypto包是一个依赖项,所以我pubspec.yaml看起来像这样:

name: app-name
dependencies:
  http: any
  crypto: any
Run Code Online (Sandbox Code Playgroud)