Flutter的http.get请求突然失效,如何排查调试?
Flutter HTTP请求无响应的调试步骤
核对网络权限配置
分别检查Android和iOS的权限设置:- Android:确认
AndroidManifest.xml中已添加<uses-permission android:name="android.permission.INTERNET" />;若API为HTTP协议(非HTTPS),需在application标签内补充android:usesCleartextTraffic="true" - iOS:在
Info.plist中配置NSAppTransportSecurity,可临时将NSAllowsArbitraryLoads设为YES(仅调试用,上线需改为目标域名白名单)
- Android:确认
捕获具体错误信息
不要只捕获笼统错误,打印异常的类型和详细内容,示例代码:try { final response = await http.get(Uri.parse('你的API地址')); print('响应状态码: ${response.statusCode}'); print('响应内容: ${response.body}'); } catch (e) { print('错误类型: ${e.runtimeType}'); print('错误详情: $e'); }若控制台无输出,可将错误信息写入本地文件,或通过Flutter DevTools查看变量值。
排查代理/VPN干扰
关闭代理或VPN后重试,若需使用代理,可通过以下命令启动应用:flutter run --dart-define=HTTP_PROXY=http://你的代理地址:端口用Flutter DevTools监控网络
启动DevTools后切换到Network标签,查看请求的完整生命周期:是否成功发送、是否收到响应、响应头和内容是否正常,排查是否存在请求被拦截或解析失败的情况。对比服务器请求日志
确认Flutter发送的请求与curl请求完全一致:核对请求头(如User-Agent、Content-Type)、参数、域名,部分服务器会对请求头做校验,Flutter默认请求头可能与curl存在差异。切换网络环境测试
切换至手机流量或其他WiFi网络,排除当前局域网防火墙、路由规则的影响。清理Flutter缓存重启
执行以下命令清除缓存后重新运行:flutter clean flutter pub get flutter run校验SSL证书(HTTPS场景)
若API为HTTPS,检查服务器SSL证书是否有效。可临时禁用证书校验测试(仅调试用):import 'dart:io'; HttpClient client = HttpClient() ..badCertificateCallback = ((X509Certificate cert, String host, int port) => true); final request = await client.getUrl(Uri.parse('你的HTTPS地址')); final response = await request.close(); // 读取响应内容
内容的提问来源于stack exchange,提问作者OltreXR4
相关产品推荐
相关产品推荐

