【问题标题】:How to put raw data in a http get request in Flutter(Dart)?如何将原始数据放入 Flutter(Dart) 中的 http get 请求中?
【发布时间】:2020-12-21 17:49:11
【问题描述】:

我正在尝试在 dart 中执行以下 curl 但我找不到实现该目标的方法:

curl --location --request GET 'https://someurl.com/query' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xxxx' \
--data-raw '{
    "query":"test_value",
    "size":10
}'

我发现实现这一点的唯一方法是使用 POST 并将原始数据放入正文中,但我想知道是否有真正的方法可以实现这一点,因为带有正文的 POST 请求似乎约为 220 毫秒比 GET 慢(我知道它们应该几乎相等,接收请求时可能是来自服务器的东西)。

【问题讨论】:

标签: flutter http dart


【解决方案1】:

http 包的默认get() 方法不允许您添加数据,因为这不是常见的事情。您可以通过直接使用Request 对象进行更细粒度的控制来解决此问题,as stated in the docs

Request req = Request('GET', Uri.parse('https://someurl.com/query'))
  ..body = json.encode(data)
  ..headers.addAll({
    "Content-type": "application/json",
    "Authorization": "Bearer xxxx"
  });

var response await req.send();
if (response.statusCode == 200) {
    // do something with valid response
}

我会考虑让 POST 变体正常工作,因为 GET 方法在语义上不应该对提供的主体做任何事情。但这当然是不同的讨论。

【讨论】:

  • 我完全错过了 headers 映射中的 .addAll 方法,以为您无法修改 Request 对象中的 headers,谢谢。
猜你喜欢
  • 2011-05-26
  • 2019-11-21
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
  • 2021-01-26
相关资源
最近更新 更多