首页 > 解决方案 > Flutter HTTP GET请求不使用body作为参数

问题描述

我有一个 REST API,它接收GET带有 JSON 正文的请求:

{
    "cart_only_items": true
}

和头部:

{
      "Authorization": "Token my_auth_token",
}

并返回响应:

{
    "items": [...]
}

这个 REST API 的GET请求在邮递员上工作得很好。

所以,我尝试在 Flutter 中实现这个请求,如下所示:

import 'package:http/http.dart';
import 'dart:convert';

void getCart() async {
    Map<String, String> reqHead = {
      "Authorization": "Token my_auth_token",
    };
    Map<String, dynamic> reqBody = {"cart_only_items": true};
    String reqURL = "${my_base_url}details/";
    Response res = await get(
      reqURL,
      body: jsonEncode(reqBody),
      headers: reqHead,
    );
  }

但是在上面的代码中,我得到了一个飞镖分析错误,例如:

error: The named parameter 'body' isn't defined. (undefined_named_parameter at [shoppingapp] lib/pages/Cart.dart:39)

那么,使用 Flutter 向需要 JSON 输入的 aGET发出请求的正确方法是什么?REST API

标签: jsonresthttpflutterdart

解决方案


这是因为,GET请求不允许在正文中传递任何类型的数据。要传递数据,您必须在GET请求中使用POST请求或查询参数。


import 'package:http/http.dart' as http;

void getCart() async {

Map data = {
  'key1': 1,
  'key2': "some text"
}

String body = json.encode(data);

http.Response response = await http.post(
  url: 'https://example.com',
  headers: {"Content-Type": "application/json"},
  body: body,
);

}


推荐阅读