Flutter Dart-如何使用HttpClient()发送Post请求

6

我正在尝试使用HttpClient向服务器发送Post请求,但我不确定应该在哪里设置需要发送的有效载荷和头部。

    var client = new HttpClient();
    client.post(host, port, path);

client.post(host, port, path) 只有3个参数,那我如何设置要发送的负载呢?

提前感谢。


以前从未接触过Flutter或Dart,但我想客户端可能有类似于client["keep-alive"] = true的元组。 - Irelia
你使用的是哪个HTTP客户端? - Chenna Reddy
@ChennaReddy 使用 Dart 库内置功能。 - Uncle Vector
2个回答

16

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 Vector
@UncleVector 不是 request.write()。我在我的回答中添加了一个例子。 - janstol

-1
String 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']);
  });

OP希望使用HttpClient解决方案,而您使用了http包。 - Chrissi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接