You need to enable JavaScript to run this app. Flutter使用http包调用OpenWeatherMap API返回HTML而非JSON如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用http包调用OpenWeatherMap API返回HTML而非JSON如何解决

问题解决方案

你遇到的返回HTML而非JSON的问题由以下原因导致,按对应步骤调整即可:

核心问题:URL缺少HTTPS协议前缀

你当前定义的url没有添加https://前缀,Uri.parse解析无协议头的地址时会触发服务器返回重定向/错误提示的HTML页面,OpenWeatherMap所有公开接口都要求必须使用HTTPS协议访问。

可选优化:添加请求头明确指定返回格式

为避免服务器默认返回非JSON格式,可在请求中添加Accept头,明确要求返回application/json类型数据。

修正后代码

void getData() async {
  // 补充https协议前缀
  final url =
      'https://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22';
  http.Response response = await http.get(
    Uri.parse(url),
    headers: {'Accept': 'application/json'},
  );
  // 可打印状态码辅助后续排查
  print('响应状态码: ${response.statusCode}');
  print(response.body);
}

额外排查项

如果调整后仍无法拿到正确JSON,可根据打印的状态码对应排查:

  • 状态码为401:你使用的appid无效,需确认OpenWeatherMap后台的密钥是否已激活、拼写是否正确
  • 状态码为404:接口路径填写错误,需对照官方文档确认接口版本、路径是否正确
  • 状态码为429:触发了免费版接口的调用频率限制,稍等片刻再重试即可

内容的提问来源于stack exchange,提问作者vandit vasa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:36:06