为什么我不能在 Flutter 中执行 rest api 请求
Why I can't do a rest api request in Flutter
有人能告诉我为什么在调用 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 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(),
};
有人能告诉我为什么在调用 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(),
};