如何将原始数据放入 Flutter(Dart) 的 http get 请求中?

时间:2020-12-21 17:49:11

标签: flutter http dart

我正在尝试在 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 慢(我知道它们应该几乎相等,它可能是服务器在接收请求时的某些东西)。

1 个答案:

答案 0 :(得分:1)

get() 包的默认 http 方法不允许您添加数据,因为这不是一件常见的事情。您可以通过直接使用 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 方法在语义上不应该对提供的主体做任何事情。但这当然是另一回事了。