如何在 Flutter 中获取返回的 POST API

Posted

技术标签:

【中文标题】如何在 Flutter 中获取返回的 POST API【英文标题】:How to get return POST API in Flutter 【发布时间】:2019-05-20 18:23:21 【问题描述】:

我需要你的帮助。我一直在关注 Login App using REST API and SQFLite 的 POST API 教程,但在调用请求后我无法获得任何回报。请在下面更正我的代码。

login_presenter.dart

doLogin(String username, String password) 
api.callAPI(username, password).then((Post user) 
  _view.onLoginSuccess(user);
).catchError((Exception error) => _view.onLoginError(error.toString()));

rest_ds.dart

Future<User> login(String username, String password) 
return _netUtil.post(LOGIN_URL, body: 
  "username": username,
  "password": password
).then((dynamic res) 
  print(res.toString());
  if(res["error"]) throw new Exception(res["error_msg"]);
  return new User.map(res["user"]);
);

我从 ParsingJSON-Flutter 获得的第二个教程,错误 Object.noSuchMethod 总是指向 _presenter.doLogin(_username, _password);,这意味着我没有联系到演示者?感谢您的帮助。

【问题讨论】:

【参考方案1】:

您应该直接从 response.body 解析 JSON,而不是直接解析正文。

Future<User> login(String username, String password) 
return _netUtil.post(LOGIN_URL, body: 
  "username": username,
  "password": password
).then((response) 
      //check response status, if response status OK
      print("Response Status : $res");
      if(response.statusCode == 200)
        var data = json.decode(response.body);

        if(data.length>0)
          //Convert your JSON to Model here
        
        else
          //Get Your ERROR message's here
          var errorMessage = data["error_msg"];
        
      
);

【讨论】:

请在您的答案中添加一些上下文

以上是关于如何在 Flutter 中获取返回的 POST API的主要内容,如果未能解决你的问题,请参考以下文章

Flutter,内部流构建器,如何根据未来获取流?

如何在 Flutter 中调用 POST 函数

在flutter中获取JSON数据返回NULL

如何在 Flutter 应用中监听和处理 POST 请求

有没有什么好方法可以在Flutter中创建一个POST请求到JSON?

如何在flutter中获取firestore文档的documentid?