5

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

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

4

2 回答 2

11

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);
      });
}

更新:由于 HttpClient 相当低级并且对于像这样简单的事情有点笨拙,核心 Dart 团队还制作了一个pubhttp,它简化了事情:

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

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

我发现这个crypto包是一个依赖,所以我的pubspec.yaml样子是这样的:

name: app-name
dependencies:
  http: any
  crypto: any
于 2013-06-19T18:14:40.077 回答
2

您将寻找作为服务器端SDK 库一部分的HttpClient 。dart:io

取自上面链接的 API 文档的示例:

HttpClient client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
    .then((HttpClientRequest request) {
      // Prepare the request then call close on it to send it.
      return request.close();
    })
    .then((HttpClientResponse response) {
      // Process the response.
    });
于 2013-06-19T18:15:10.443 回答