Flutter GET请求在jsonplaceholder正常,自建站点无响应无报错求助
问题排查与解决方案
1. 先修正代码语法错误
你的代码存在语法结构错误,if语句不在fetchData异步函数内部,导致response变量作用域无效,这会直接导致代码无法正常执行:
修正后的代码:
fetchData() async { var url = Uri.parse('https://konamicash.com/connexion_bdd_flutter'); var response = await http.get(url); if (response.statusCode == 200) { print('ça fonctionne: ${response.body}'); } else { print('Erreur: ${response.statusCode}'); } }
- 将
if代码块移入fetchData函数的大括号内,确保response变量能被正确访问 - 错误打印时带上状态码,便于精准定位问题
2. 排查服务器端与网络问题
若修正代码后仍无响应,大概率是服务器或网络层面的问题:
- 验证HTTPS证书有效性:用浏览器访问
https://konamicash.com/connexion_bdd_flutter,查看是否有证书警告。如果证书无效,Flutter会默认拒绝请求,调试阶段可临时添加证书信任(生产环境不建议) - 测试服务器响应状态:用Postman或curl发起GET请求,确认是否能拿到预期的JSON响应。如果工具也无法获取响应,说明服务器可能未启动、路径配置错误或被防火墙拦截
- 检查CORS配置:如果是Flutter Web端运行,需确保服务器配置了CORS规则,允许你的前端域名访问。移动端一般不受CORS限制,但仍需确认服务器是否设置了IP白名单
- 排查网络环境限制:检查设备是否处于受限网络(如公司内网、代理环境),导致请求无法到达目标服务器
3. 增加异常捕获逻辑
在代码中添加try-catch块,捕获请求过程中的异常,能帮你快速定位具体问题:
fetchData() async { try { var url = Uri.parse('https://konamicash.com/connexion_bdd_flutter'); var response = await http.get(url); if (response.statusCode == 200) { print('ça fonctionne: ${response.body}'); } else { print('Erreur statut: ${response.statusCode}'); } } catch (e) { print('Erreur requête: $e'); } }
内容的提问来源于stack exchange,提问作者Deenan Djigbenou
相关产品推荐
相关产品推荐

