我正在尝试使用HttpClient
向服务器发送Post请求,但我不确定应该在哪里设置需要发送的有效载荷和头部。
var client = new HttpClient();
client.post(host, port, path);
client.post(host, port, path)
只有3个参数,那我如何设置要发送的负载呢?
提前感谢。
post()方法使用POST方法打开一个HTTP连接并返回Future<HttpClientRequest>
。
所以你需要这样做:
final client = HttpClient();
final request = await client.post(host, port, path);
request.headers.set(HttpHeaders.contentTypeHeader, "plain/text"); // or headers.add()
final response = await request.close();
通过jsonplaceholder示例:
final client = HttpClient();
final request = await client.postUrl(Uri.parse("https://jsonplaceholder.typicode.com/posts"));
request.headers.set(HttpHeaders.contentTypeHeader, "application/json; charset=UTF-8");
request.write('{"title": "Foo","body": "Bar", "userId": 99}');
final response = await request.close();
response.transform(utf8.decoder).listen((contents) {
print(contents);
});
打印
{
"title": "Foo",
"body": "Bar",
"userId": 99,
"id": 101
}
或者您可以使用http库。
request.add(data)
吗? - Uncle Vectorrequest.write()
。我在我的回答中添加了一个例子。 - janstolString url =
'http://wwww.foo.com';
http.get(url).then((http.Response response) {
is_loading=true;
// print(json.decode(response.body));
Map<String, dynamic> Data = json.decode(response.body);
Data.forEach((String data, dynamic data_value) {
print(data + " : ");
print(data_value.toString());
// Map<String,String> decoded_data=json.decode(data);
// print(data_value.toString());
//print(data['title']);
//print(data['content']);
});
client["keep-alive"] = true
的元组。 - Irelia