You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Dart HTTP请求报错Expected a value of type 'int', but got one of type 'String'

错误原因

  • 你对请求体的构造逻辑有误:你将单个坐标对象单独编码为JSON字符串后放入数组传递给body参数,http库会将该数组按表单格式处理而非输出JSON格式,导致服务端解析到的参数类型不匹配,触发类型错误。
  • 缺少Content-Type: application/json请求头,服务端无法正确识别请求体的格式为JSON。
  • 你携带的Access-Control-Allow-Origin属于响应头,在请求中添加无实际作用,可以直接移除。

正确实现代码

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<String> deleteObstacle(String server, int x, int y) async {
  // 先构造完整的数组对象,再整体编码为JSON字符串
  final requestBody = jsonEncode([
    <String, int>{"x": x, "y": y}
  ]);
  final response = await http.delete(
    Uri.parse('$server/admin/obstacles/'),
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json", // 必须指定请求体格式为JSON
    },
    body: requestBody,
  );
  if (response.statusCode == 200) {
    Map<String, dynamic> launchResponse = jsonDecode(response.body);
    return launchResponse['response'];
  } else {
    throw Exception("ERROR Attempting to Delete obstacle");
  }
}

修改后请求体将完全符合要求的[{"x": 1, "y": 1}]JSON数组格式,类型错误会自动修复。

内容的提问来源于stack exchange,提问作者Naeem Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:03