首页 > 解决方案 > 带有正文参数的 Http 发布请求不起作用

问题描述

最近我开始在 Flutter 中开发一个小应用程序。我在发出网络请求时遇到问题。我已经尝试过邮递员的电话,并且可以正常工作。但是在 Flutter 中,我从来没有成功过,我花了大约 3 个小时试图了解我做错了什么。

任何帮助将不胜感激。

 @override
  Future<String> login(common.LoginParameters loginParameters) async {
    try {

      final String loginURL = "https://test.example.eu/api/login";

      LoginModel loginResult;

      Map bodyParams = { "inlognaam" : loginParameters.username , "wachtwoord" : loginParameters.password, "code" : loginParameters.smsCode};

      //await API call
      http.Response httpResponse = await http.put( loginURL, body: json.encode(bodyParams));

      if (httpResponse.statusCode == 200) {
        // If server returns an OK response, parse the JSON
        loginResult=  LoginModel.fromJson(json.decode(httpResponse.body));
      } else {
        // If that response was not OK, throw an error.
        throw Exception('Failed to load post');
      }

      // if logged in get token, Otherwise return error
      if (loginResult.ingelogd) {
        // read the token

        saveToken(loginResult.response);
        return "Ingelogd";
      } else {
        return loginResult.error;
      }
    }
    on Exception catch(error) {
      print("Todor " + error.toString());
      return "Controleer uw internet verbinding en probeer opnieuw";
    }
  }

在 Postman 中,如果我选择带有正文参数 inlognaam 的 Post 请求:someUsername wachtwoord:somePassword 代码:someCode

然后我得到一个成功的响应

标签: networkingflutter

解决方案


我通过以下方式传递参数,也许它可以为你工作:

var response = await http.post(
url,
headers:{ "Accept": "application/json" } ,
body: { "state": 1}, //key value
encoding: Encoding.getByName("utf-8")
);

另一件事,你说在邮递员中你发出一个post请求,但在你的代码中你有一个put请求,验证什么是正确的方法


推荐阅读