Android 12+环境下Flutter HTTP插件调用REST API WiFi网络异常缓慢问题
Flutter Android 12+ WiFi环境HTTPS请求超时问题
问题描述
应用基于Flutter 3.3.6开发,使用**http插件(0.13.5)**调用HTTPS域名接口时,出现以下异常:
- WiFi网络下接口响应耗时超10秒,移动数据网络下耗时不到1秒;
- Java客户端、Postman调用同接口,无论网络环境耗时均不到1秒。
排查测试结果(WiFi环境)
- 用IP地址替代域名调用(禁用SSL验证),耗时不到1秒;
- 开启
connection keep-alive: true后,首次请求耗时超10秒,后续请求耗时恢复正常; - 仅Android 12+设备存在此问题,Android 11及以下设备WiFi环境下接口耗时正常。
目前发现WiFi环境下总耗时固定为10秒+实际接口处理时间(例如10.400秒左右),请问该问题的特定诱因是什么?
Flutter环境信息
[√] Flutter (Channel stable, 3.3.6, on Microsoft Windows [Version 10.0.22000.1219], locale en-US) • Flutter version 3.3.6 on channel stable at C:\Applns\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 6928314d50 (6 weeks ago), 2022-10-25 16:34:41 -0400 • Engine revision 3ad69d7be3 • Dart version 2.18.2 • DevTools version 2.15.0 [!] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1) • Android SDK at C:\Users\Siju\AppData\Local\Android\sdk X cmdline-tools component is missing Run `path/to/sdkmanager --install "cmdline-tools;latest"` See https://developer.android.com/studio/command-line for more details. X Android license status unknown. Run `flutter doctor --android-licenses` to accept the SDK licenses. See https://flutter.dev/docs/get-started/install/windows#android-setup for more details. [√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.1) • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community • Visual Studio Community 2022 version 17.4.33110.190 • Windows 10 SDK version 10.0.22000.0 [√] Android Studio (version 2021.2) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840) [√] Connected device (4 available) • 2201116SI (mobile) • b75ac32a6d34 • android-arm64 • Android 12 (API 31) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.22000.1219] • Chrome (web) • chrome • web-javascript • Google Chrome 107.0.5304.123 • Edge (web) • edge • web-javascript • Microsoft Edge 107.0.1418.62 [√] HTTP Host Availability • All required HTTP hosts are available
问题诱因分析
结合测试结果和环境信息,问题的核心诱因如下:
Android 12+ DNS策略变更与旧版插件适配冲突
Android 12(API 31)强制默认启用私有DNS(若网络支持),而你使用的http插件0.13.5基于的Dart 2.18.2版本,其底层IO HTTP客户端未适配该DNS策略,导致首次域名解析时触发10秒超时等待——这正是你观察到的固定延迟来源。DNS解析环节是核心瓶颈
IP直连跳过DNS解析后耗时正常、开启keep-alive后后续请求复用连接无需重复解析也正常,直接证明问题出在域名解析阶段,而非SSL握手或接口处理逻辑。第三方客户端无异常的原因
Java客户端、Postman使用的是Android系统自带的HttpURLConnection或OkHttp等成熟库,这些库已经适配了Android 12+的DNS变更,因此不会出现超时问题。
内容的提问来源于stack exchange,提问作者John_S
相关产品推荐
相关产品推荐

