有人可以告诉我为什么我在调用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);
我已经使用断点检查给定的数据是否正确,并且看起来不错,
我在这里停留了很多小时,不知道下一步该怎么做:/
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 aString
, aList<int>
or aMap<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/