【发布时间】:2019-10-12 20:32:47
【问题描述】:
我正在尝试将一些数据发布到此结构的后端:
class Activity {
String id;
String employeeId;
String locationId;
String locationName;
DateTime startDateTime;
DateTime endDateTime;
int breakMinutes;
String actionId;
String actionType;
int startDeviceType;
int endDeviceType;
String comment;
factory Activity.fromJson(Map<String, dynamic> json) =>
_$ActivityFromJson(json);
Map<String, dynamic> toJson() => _$ActivityToJson(this);
}
我正在将类转换为这样的地图:
Map<String, dynamic> _$ActivityToJson(Activity instance) => <String, dynamic>{
'id': instance.id,
'employeeId': instance.employeeId,
'locationId': instance.locationId,
'locationName': instance.locationName,
'startDateTime': instance.startDateTime?.toIso8601String(),
'endDateTime': instance.endDateTime?.toIso8601String(),
'breakMinutes': instance.breakMinutes,
'actionId': instance.actionId,
'actionType': instance.actionType,
'startDeviceType': instance.startDeviceType,
'endDeviceType': instance.endDeviceType,
'comment': instance.comment,
};
...并使用以下行发送:
Future<HttpError> updateAsync(Activity activity) async {
var url = '...';
...
var body = activity.toJson();
Response response = await http.post(
url,
headers: headers,
body: body,
);
if (isSuccess(response.statusCode)) {
return null;
}
return new HttpError(
errorCode: response.statusCode, errorMessage: response.reasonPhrase);
}
...那么后端想要接收那些数据:
{
"startDateTime": "2019-10-12T19:59:22.801Z",
"endDateTime": "2019-10-12T19:59:22.801Z",
"breakMinutes": 0,
"actionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"startDeviceType": 0,
"endDeviceType": 0,
"comment": "string"
}
我现在面临的问题是调用 post() 时出错
type 'int' is not a subtype of type 'String' in type cast
如果我在转换为 Map 时对整数值调用 .toString(),我会得到 415 - Unsupported Media Type。
这是一个错误还是我真的在这里做错了什么?
【问题讨论】:
-
这不是一个错误,只是你的后端数据支持
string数据,而你将int传递给它。转换后发送到后端就可以了。 -
后端想要接收整数,将命名值转换为字符串我会收到另一个错误,告诉我值无效,所以是的,整数是我要发送的类型跨度>
-
请显示您将
Map<String, dynamic>转换为 JSON 字符串的代码。出于调试目的,还要检查body是否为String并打印出来。 -
我添加了更多代码行。也许他们有助于找到问题
标签: rest http post flutter dart