rest - 为什么我不能在Flutter中执行rest api请求

标签 rest flutter dart http-post

有人可以告诉我为什么我在调用POST请求时遇到以下异常:

Exception has occurred.
_CastError (type 'int' is not a subtype of type 'String' in type cast)


它抛出这一行:
var response = await http.post(url, body:data);

我已经使用断点检查给定的数据是否正确,并且看起来不错,

enter image description here

我在这里停留了很多小时,不知道下一步该怎么做:/

REST api函数:
addEvent(String title, startDate, startTime, endDate, endTime, description, city, address, entryType, int freePlacesCount) async {
    Map data = {
      "title":title,
      "startDate":startDate,
      "startTime":startTime,
      "endDate":endDate,
      "endTime":endTime,
      "description":description,
      "city":city,
      "address":address,
      "entryType":entryType,
      "freePlacesCount":freePlacesCount,
      //"organizer":organizer
    };

    var jsonResponse;
    var url = 'http://10.0.2.2:80/party';
    var response = await http.post(url, body:data);

按键:
      child: RaisedButton(
        onPressed: () {
          addEvent(
            sharedPreferences.getString('eventName'),
            sharedPreferences.getString('dateFrom'),
            sharedPreferences.getString('timeFrom'),
            sharedPreferences.getString('dateTo'),
            sharedPreferences.getString('timeTo'),
            descriptionText.text,
            sharedPreferences.getString('eventCity'),
            sharedPreferences.getString('eventAddress'),
            sharedPreferences.getString('eventType'),
            sharedPreferences.getInt('freePlaces')
          );
        },
      ),

最佳答案

问题出在您的 body 参数上。您只能将Map<String, String>设置为body参数,在您的情况下为Map<String, dynamic>

根据http post文档:

body sets the body of the request. It can be a String, a List<int> or a Map<String, String>



要修复它,请将int类型转换为String:
Map<String,String> data = {
   "title":title,
   "startDate":startDate,
   "startTime":startTime,
   "endDate":endDate,
   "endTime":endTime,
   "description":description,
   "city":city,
   "address":address,
   "entryType":entryType,
   "freePlacesCount":freePlacesCount.toString(),
};

关于rest - 为什么我不能在Flutter中执行rest api请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61397150/

相关文章:

java - 如何使用 Jersey 缓存响应?

iphone - Objective-C:在你的 iPhone 上访问 REST API 的最佳方式

dart - 不支持的操作:无法解析引用

http - 应如何在 RESTful API 中检索 transient 资源

flutter - Flutter如何在没有Media Query的情况下获得亮度?

flutter - Flutter widgets 的绝对位置

android - Flutter 将文本 onchange 值分配给变量

android - 在Flutter中添加Firebase.initializeApp()的正确位置在哪里?

generics - 如何根据其父类检查类型?

rest - 对于在 202 代码之后未准备好的资源,REST 应该返回什么 HTTP 代码?