如何使用控制台dart应用程序执行HTTP POST(使用dart:io
或可能是package:http
库.我这样做:
import 'package:http/http.dart' as http;
import 'dart:io';
http.post(
url,
headers: {HttpHeaders.CONTENT_TYPE: "application/json"},
body: {"foo": "bar"})
.then((response) {
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
}).catchError((err) {
print(err);
});
但是得到以下错误:
Bad state: Cannot set the body fields of a Request with content-type "application/json".
小智.. 29
这是一个完整的例子.您必须使用json.encode(...)
将请求的主体转换为JSON.
import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; var url = "https://someurl/here"; var body = json.encode({"foo": "bar"}); Map headers = { 'Content-type' : 'application/json', 'Accept': 'application/json', }; final response = http.post(url, body: body, headers: headers); final responseJson = json.decode(response.body); print(responseJson);
通常建议您使用a Future
来满足您的要求,这样您就可以尝试类似的东西
import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; FuturerequestMethod() async { var url = "https://someurl/here"; var body = json.encode({"foo": "bar"}); Map headers = { 'Content-type' : 'application/json', 'Accept': 'application/json', }; final response = await http.post(url, body: body, headers: headers); final responseJson = json.decode(response.body); print(responseJson); return response; }
语法的唯一区别是async
和await
关键字.
这是一个完整的例子.您必须使用json.encode(...)
将请求的主体转换为JSON.
import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; var url = "https://someurl/here"; var body = json.encode({"foo": "bar"}); Map headers = { 'Content-type' : 'application/json', 'Accept': 'application/json', }; final response = http.post(url, body: body, headers: headers); final responseJson = json.decode(response.body); print(responseJson);
通常建议您使用a Future
来满足您的要求,这样您就可以尝试类似的东西
import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; Future<http.Response> requestMethod() async { var url = "https://someurl/here"; var body = json.encode({"foo": "bar"}); Map<String,String> headers = { 'Content-type' : 'application/json', 'Accept': 'application/json', }; final response = await http.post(url, body: body, headers: headers); final responseJson = json.decode(response.body); print(responseJson); return response; }
语法的唯一区别是async
和await
关键字.