我开始尝试在其中使用 HTTPRequest,dart:html
但很快意识到这在控制台应用程序中是不可能的。我做了一些谷歌搜索,但找不到我想要的(只找到 HTTP 服务器),有没有通过控制台应用程序发送正常 HTTP 请求的方法?
还是我必须采用使用套接字的方法并实现我自己的 HTTP 请求?
我开始尝试在其中使用 HTTPRequest,dart:html
但很快意识到这在控制台应用程序中是不可能的。我做了一些谷歌搜索,但找不到我想要的(只找到 HTTP 服务器),有没有通过控制台应用程序发送正常 HTTP 请求的方法?
还是我必须采用使用套接字的方法并实现我自己的 HTTP 请求?
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 团队还制作了一个pub
包http
,它简化了事情:
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
您将寻找作为服务器端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.
});