如何在飞镖中使用 POST 方法?

how to use POST method in dart?

我想向服务器发送请求并获取详细信息,我已经编写了一些代码,但我不知道为什么它不起作用。 我发现原因是我的变量不会被发送到服务器,我不知道问题出在哪里。 这是我的代码:

  _sendBuyBtnReq(
      {required BuildContext context,
      required String Amount,
      required String ScoreAmount}) async {
    final prefs = await SharedPreferences.getInstance();
    var toke = prefs.getString('mykey');
    var ide = prefs.getString('mykey');

    final url = Uri.parse('my url');
    var body = Map<String, dynamic>();

    body["CustomerId"] = '$ide';
    body["Amount"] = '$Amount';
    body["Credit"] = '$ScoreAmount';
    body["Description"] = '2';

    http.Response response = await http.post(
      url,
      headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Authorization': 'Bearer $toke'
      },
    );

    if (response.statusCode == 200) {
      print(await response.body.toString());
    } else {
      print(response.reasonPhrase);
      var messageM = jsonDecode(utf8.decode(response.bodyBytes));
      var MessageModel = messageModel(messageM['message']);
      // print(MessageModel._message);
      showSnackBar7(context, MessageModel.message);
    }
  }

您的代码缺少正文参数,这就是您的 POST 请求被视为不完整的原因。试试这个代码。

_sendBuyBtnReq(
      {required BuildContext context,
      required String Amount,
      required String ScoreAmount}) async {
    final prefs = await SharedPreferences.getInstance();
    var toke = prefs.getString('mykey');
    var ide = prefs.getString('mykey');

    final url = Uri.parse('my url');
    var body = Map<String, dynamic>();

    body["CustomerId"] = '$ide';
    body["Amount"] = '$Amount';
    body["Credit"] = '$ScoreAmount';
    body["Description"] = '2';

    http.Response response = await http.post(
      url,
      body: json.encode(body),
      headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Authorization': 'Bearer $toke'
      },
    );

    if (response.statusCode == 200) {
      print(await response.body.toString());
    } else {
      print(response.reasonPhrase);
      var messageM = jsonDecode(utf8.decode(response.bodyBytes));
      var MessageModel = messageModel(messageM['message']);
      // print(MessageModel._message);
      showSnackBar7(context, MessageModel.message);
    }
}

您必须将正文传递给请求

并确保您的 url 正常工作

试试这个

    final prefs = await SharedPreferences.getInstance();
    var toke = prefs.getString('mykey');
    var ide = prefs.getString('mykey');
    final url = Uri.parse('my url'); //pass proper url
    var body = Map<String, dynamic>();
    
    body["CustomerId"] = '$ide';
    body["Amount"] = '$Amount';
    body["Credit"] = '$ScoreAmount';
    body["Description"] = '2';

    http.Response response = await http.post(
          url,
          headers: {
            'Content-Type': 'application/json; charset=UTF-8',
            'Authorization': 'Bearer $toke'
          },
         body: body,
        );


    if (response.statusCode == 200) {
       print(response.body.toString());
    }