首页 > 解决方案 > 使用 http Flutter 获取 API

问题描述

我正在尝试使用 http 包获取 api。它正在使用邮递员。它在正文中有表单数据。我无法弄清楚我们如何在标题中调用表单数据。我将附上邮递员图片以便更好地理解。

在此处输入图像描述

在此处输入图像描述

我的代码:

Future<LocationDetailsById> locationDetailsByID(BuildContext context,String locationID) async{
      String url = baseUrl + "location/detailsbyid";
      var body = {

        "location_id":int.parse(locationID)};
      Utils.showLoaderDialog(context);
      final response = await http.post(Uri.parse(url), headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/form-data',
        'Authorization':'Bearer ${Utils.token}',
      }, body: jsonEncode(body)
      );
      print("request $locationID");
      print("response ${response.body}");
      if(response.statusCode == 200){
        Navigator.pop(context);

        return  LocationDetailsById.fromJson(json.decode(response.body));


      }else {
        return Utils.errorDialog(context, "Something went wrong");
      }

    }

标签: flutterhttp

解决方案


我怀疑您的正文格式不正确,因为它看起来像是针对接受 JSON 正文的端点的格式。

我会将帖子正文格式化为FormData

String url = baseUrl + "location/detailsbyid";
FormData formData = FormData.fromMap(body);
await http.post(url: url, body: formData, headers: {...});

推荐阅读