Flutter移动端API调用报错:ClientException伴SocketException求助
Flutter移动端API调用SocketException(errno=7)问题排查与解决
问题说明
Flutter应用调用API时,Web和桌面端运行正常,但移动端启动触发异常,提示主机查找失败。
错误信息
Exception: ClientException with SocketException: Failed host lookup: 'xxxxxx' (OS Error: No address associated with hostname, errno = 7)
相关代码
请求代码:
try { final response = await http.get( Uri.parse(url), headers: { 'Authorization': basicAuth, 'Accept': 'application/json', }, );
已添加的Android权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application
解决方案
验证域名/IP有效性
确认目标主机名xxxxxx拼写正确,可用设备浏览器直接访问该域名测试连通性,或替换为API的IP地址发起请求,排除DNS解析问题。检查移动端网络环境
切换测试设备的网络(如从WiFi切换到手机流量),避免局域网DNS屏蔽、代理设置等导致的域名无法解析。修正Android权限配置
确保权限声明放在<manifest>标签下(而非<application>内部),正确结构:<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application ...> <!-- 应用其他配置 --> </application> </manifest>若API使用HTTP协议(非HTTPS),Android 9及以上需在
<application>标签内添加明文请求允许:android:usesCleartextTraffic="true"iOS端网络配置
针对iOS设备,若API为HTTP协议,需在Info.plist中添加以下配置以绕过App Transport Security限制:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>重置应用环境
执行flutter clean清理编译缓存,然后完全卸载设备上的应用,重新编译安装,确保权限变更生效。
内容的提问来源于stack exchange,提问作者Mert
相关产品推荐
相关产品推荐

