You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Android应用SoftAp配网后HTTP请求失败问题排查

Android Flutter应用ESP配网后连续请求失败问题

开发的Android端Flutter应用可实现ESP设备WiFi添加与请求发送,但配网与请求单独执行均正常,连续操作则请求失败。

目标全链路流程:应用内先连接ESP自身热点,通过SoftAp配网下发本地WiFi凭证并应用配置;待ESP与手机处于同一局域网、发现设备后发送认证请求,此时出现如下错误:

E/flutter (31739): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: Connection failed
E/flutter (31739): #0      IOClient.send (package:http/src/io_client.dart:88:7)
E/flutter (31739): <asynchronous suspension>
E/flutter (31739): #1      ChopperClient.send (package:chopper/src/base.dart:305:23)
E/flutter (31739): <asynchronous suspension>
E/flutter (31739): #2      ESPDevice.sendRequest ([...filepath...])
E/flutter (31739): <asynchronous suspension>

请求可正常执行的场景

  • 完全关闭并重新打开应用后
  • 使用未参与配网的手机
  • 通过Postman发送请求
  • 经Apple Home完成配网后
  • 使用ESP SoftAP Prov应用配网后重新打开应用

请求执行失败的场景

  • 在应用内完成配网后
  • 应用后台运行时,通过ESP SoftAP Prov应用完成配网后

简化配网代码

await WiFiForIoTPlugin.connect(ssid, password: password);
await WiFiForIoTPlugin.forceWifiUsage(true);
Provisioning provisioning = Provisioning(transport: TransportHTTP(hostname: '192.168.4.1:80'), security: Security1(pop: pop));
await provisioning.establishSession();
await provisioning.sendWifiConfig(ssid: newSsid, password: newPassword);
await provisioning.applyWifiConfig();
await WiFiForIoTPlugin.disconnect();

OnWillPop处理代码

await provisioning.dispose();
await WiFiForIoTPlugin.disconnect();

使用的依赖包

  • bonsoir: ^2.0.0(局域网设备发现)
  • http: ^0.13.5(请求发送)
  • chopper: ^4.0.6(请求发送)
  • esp_provisioning_softap: ^1.0.3(ESP设备配网)
  • wifi_iot: ^0.3.18(应用内连接ESP热点)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:01:23