Joh*_*n_S 6 android flutter flutter-http
我遇到了 Flutter Android 12+ 版本的问题。使用 Flutter http 插件(版本:0.13.5)进行应用程序消费 REST API 调用。所有API调用都是带有域名的HTTPS服务调用。API 调用需要 10 多秒才能提供响应,而相同的 API 调用在移动数据网络中只需要不到一秒。我尝试使用 Java Client 和 Postman 进行相同的 API 调用,所有响应仅花费不到一秒的时间就得到响应。
\n在故障排除过程中,我使用Wifi网络测试了以下场景
\n现在我明白基于 Wifi 的 API 调用总是需要 10 秒 + 实际服务调用时间(例如 400 毫秒,因此相当于 10.400 秒)。
\n这个问题有什么具体原因吗?
\nflutter doctor -v\n[\xe2\x88\x9a] Flutter (Channel stable, 3.3.6, on Microsoft Windows [Version 10.0.22000.1219], locale en-US)\n \xe2\x80\xa2 Flutter version 3.3.6 on channel stable at C:\\Applns\\flutter\n \xe2\x80\xa2 Upstream repository https://github.com/flutter/flutter.git\n \xe2\x80\xa2 Framework revision 6928314d50 (6 weeks ago), 2022-10-25 16:34:41 -0400\n \xe2\x80\xa2 Engine revision 3ad69d7be3\n \xe2\x80\xa2 Dart version 2.18.2\n \xe2\x80\xa2 DevTools version 2.15.0\n\n[!] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)\n \xe2\x80\xa2 Android SDK at C:\\Users\\Siju\\AppData\\Local\\Android\\sdk\n X cmdline-tools component is missing\n Run `path/to/sdkmanager --install "cmdline-tools;latest"`\n See https://developer.android.com/studio/command-line for more details.\n X Android license status unknown.\n Run `flutter doctor --android-licenses` to accept the SDK licenses.\n See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.\n\n[\xe2\x88\x9a] Chrome - develop for the web\n \xe2\x80\xa2 Chrome at C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\n\n[\xe2\x88\x9a] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.1)\n \xe2\x80\xa2 Visual Studio at C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\n \xe2\x80\xa2 Visual Studio Community 2022 version 17.4.33110.190\n \xe2\x80\xa2 Windows 10 SDK version 10.0.22000.0\n\n[\xe2\x88\x9a] Android Studio (version 2021.2)\n \xe2\x80\xa2 Android Studio at C:\\Program Files\\Android\\Android Studio\n \xe2\x80\xa2 Flutter plugin can be installed from:\n https://plugins.jetbrains.com/plugin/9212-flutter\n \xe2\x80\xa2 Dart plugin can be installed from:\n https://plugins.jetbrains.com/plugin/6351-dart\n \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)\n\n[\xe2\x88\x9a] Connected device (4 available)\n \xe2\x80\xa2 2201116SI (mobile) \xe2\x80\xa2 b75ac32a6d34 \xe2\x80\xa2 android-arm64 \xe2\x80\xa2 Android 12 (API 31)\n \xe2\x80\xa2 Windows (desktop) \xe2\x80\xa2 windows \xe2\x80\xa2 windows-x64 \xe2\x80\xa2 Microsoft Windows [Version 10.0.22000.1219]\n \xe2\x80\xa2 Chrome (web) \xe2\x80\xa2 chrome \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 107.0.5304.123\n \xe2\x80\xa2 Edge (web) \xe2\x80\xa2 edge \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Microsoft Edge 107.0.1418.62\n\n[\xe2\x88\x9a] HTTP Host Availability\n \xe2\x80\xa2 All required HTTP hosts are available\nRun Code Online (Sandbox Code Playgroud)\n
该问题是由于flutter HTTP客户端中的IPv4/IPv6 DNS解析造成的。在 HTTP 服务调用期间,dart 客户端尝试使用 IPv6 地址而不是 IPv4 进行 DNS 解析,其中 DNS 服务器不支持 IPV6 版本,因此它会等待 10 秒后回退到 IPv4 并建立连接。许多 Flutter 开发人员在 Flutter git 存储库中报告了此问题。
所有这些问题都得到了整合,并在 Flutter git 存储库中报告了一个新功能(https://github.com/flutter/flutter/issues/116537)
更新Flutter 功能请求已关闭,并在 dart SDK 中提出新功能请求https://github.com/dart-lang/sdk/issues/50868
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |