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

Flutter调用.NET Core 6 WebApi拉取SQL Server数据遇FormatException求助

解决Flutter调用.NET Core 6 WebApi拉取SQL Server数据时的FormatException错误

核心原因

这个FormatException: Unexpected character (at character 1)错误,本质是Flutter尝试解析JSON时,收到的响应根本不是有效JSON——可能是HTML错误页面、纯文本报错信息,或者WebApi返回格式不对。

排查及解决步骤

1. 先确认WebApi的实际返回内容

在Flutter请求代码里,先打印原始响应体,别直接解析JSON:

final response = await http.get(Uri.parse('你的API接口地址'));
print('状态码:${response.statusCode}');
print('原始响应:${response.body}');

运行后查看控制台输出,大概率能定位问题:比如返回的是.NET默认的500错误HTML页面,或者SQL查询报错的文本信息,这些非JSON内容会直接导致解析失败。

2. 修复WebApi端的问题

  • 验证SQL查询有效性:在WebApi控制器方法中添加日志或断点,确认从SQL Server获取的数据正常,没有抛出异常。
  • 强制返回JSON格式:给控制器方法加上[Produces("application/json")]特性,确保返回内容为JSON;错误场景下也要返回JSON格式的报错信息,避免默认HTML页面:
    [HttpGet]
    [Produces("application/json")]
    public IActionResult GetData()
    {
        try
        {
            var data = _dbContext.YourTable.ToList();
            return Ok(data);
        }
        catch (Exception ex)
        {
            return StatusCode(500, new { error = ex.Message });
        }
    }
    
  • 配置全局错误处理:如果.NET Core抛出异常时返回默认HTML错误页,改成统一返回JSON:
    在Program.cs中添加:
    app.UseExceptionHandler(errorApp =>
    {
        errorApp.Run(async context =>
        {
            context.Response.ContentType = "application/json";
            var exceptionFeature = context.Features.Get<IExceptionHandlerPathFeature>();
            var errorMsg = exceptionFeature?.Error?.Message ?? "未知错误";
            await context.Response.WriteAsJsonAsync(new { error = errorMsg });
        });
    });
    

3. 调整Flutter端请求逻辑

  • 指定接收JSON格式:请求头中添加Accept: application/json,明确告知WebApi返回JSON:
    final response = await http.get(
      Uri.parse('你的API接口地址'),
      headers: {'Accept': 'application/json'},
    );
    
  • 先判断状态码再解析:不要忽略状态码直接硬解析,先处理错误场景:
    if (response.statusCode == 200) {
      var jsonData = jsonDecode(response.body);
      // 处理业务数据
    } else {
      print('请求出错:${response.body}');
      // 根据返回的错误信息做对应处理
    }
    

内容的提问来源于stack exchange,提问作者Mahmut BULMUS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:39