使用飞镖的 http 请求
http requests with dart
我正在尝试学习 dart,尝试使用来自 this blog 的 http 请求。
所以我在 Windows 上安装了 dart 但出于某种原因我似乎无法 运行 这个脚本:
import 'dart:html';
import 'dart:convert';
void main() {
var data = { 'title' : 'My first post' };
HttpRequest.request(
'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
sendData: json.encode(data),
requestHeaders: {
'Content-Type': 'application/json; charset=UTF-8'
}
)
.then((resp) {
print(resp.responseUrl);
print(resp.responseText);
});
}
// Response
// https://jsonplaceholder.typicode.com/posts
// { "title": "My first post", "id": "101" }
当我从 Windows 终端 运行 执行此操作时 $dart run script.dart
这将出错:
script.dart:1:8: Error: Not found: 'dart:html'
import 'dart:html';
^
script.dart:8:3: Error: Undefined name 'HttpRequest'.
HttpRequest.request(
^^^^^^^^^^^
但是在博客 post 中有一个 link 到 dart pad 代码 运行 就可以了。有什么想法可以尝试吗?感谢任何煽动
$dart --version
Dart SDK version: 2.15.1 (stable) (Tue Dec 14 13:32:21 2021 +0100) on "windows_x64"
使用 http 包是首选方法,因为它可以在所有平台上一致地工作。
可以通过执行以下操作来提出相同的请求:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() {
var data = {'title': 'My first post'};
http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
).then((resp) {
print(resp.body);
});
}
尽管通常使用 async
/await
语法代替:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
var data = {'title': 'My first post'};
var resp = await http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
);
print(resp.body);
}
我正在尝试学习 dart,尝试使用来自 this blog 的 http 请求。
所以我在 Windows 上安装了 dart 但出于某种原因我似乎无法 运行 这个脚本:
import 'dart:html';
import 'dart:convert';
void main() {
var data = { 'title' : 'My first post' };
HttpRequest.request(
'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
sendData: json.encode(data),
requestHeaders: {
'Content-Type': 'application/json; charset=UTF-8'
}
)
.then((resp) {
print(resp.responseUrl);
print(resp.responseText);
});
}
// Response
// https://jsonplaceholder.typicode.com/posts
// { "title": "My first post", "id": "101" }
当我从 Windows 终端 运行 执行此操作时 $dart run script.dart
这将出错:
script.dart:1:8: Error: Not found: 'dart:html'
import 'dart:html';
^
script.dart:8:3: Error: Undefined name 'HttpRequest'.
HttpRequest.request(
^^^^^^^^^^^
但是在博客 post 中有一个 link 到 dart pad 代码 运行 就可以了。有什么想法可以尝试吗?感谢任何煽动
$dart --version
Dart SDK version: 2.15.1 (stable) (Tue Dec 14 13:32:21 2021 +0100) on "windows_x64"
使用 http 包是首选方法,因为它可以在所有平台上一致地工作。
可以通过执行以下操作来提出相同的请求:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() {
var data = {'title': 'My first post'};
http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
).then((resp) {
print(resp.body);
});
}
尽管通常使用 async
/await
语法代替:
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
var data = {'title': 'My first post'};
var resp = await http.post(
Uri.parse('https://jsonplaceholder.typicode.com/posts'),
headers: {'Content-Type': 'application/json; charset=UTF-8'},
body: json.encode(data),
);
print(resp.body);
}