Postman正常的HTTP GET请求在Flutter中失败的排查与解决
Flutter调用API出现Host查找失败的解决方法
以下是针对Failed Host To lookup错误的具体排查和解决步骤:
添加网络权限
物理设备运行Flutter应用时,必须配置网络权限才能访问外部API:- Android:在
android/app/src/main/AndroidManifest.xml中,在<application>标签上方添加:
若API使用HTTP协议(非HTTPS),还需在<uses-permission android:name="android.permission.INTERNET" /><application>标签内添加android:usesCleartextTraffic="true"。 - iOS:在
ios/Runner/Info.plist中添加以下配置,允许网络请求:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
- Android:在
验证URL格式正确性
确保Uri.parse传入的URL没有多余字符(如空格、换行),且主机域名正确。可以先在设备浏览器中直接访问该URL,确认能正常加载内容。排查网络与DNS问题
- 确保设备和Postman处于同一网络环境(如同一WiFi),避免因网络差异导致DNS解析失败。
- 尝试切换网络(WiFi/手机流量),测试是否能正常解析主机。
简化请求代码测试
先使用更简洁的http.get方法替代StreamedResponse,排除请求方式的问题:import 'package:http/http.dart' as http; Future getlist() async { final headers = {'Ocp-Apim-Subscription-Key': 'thekeyishere'}; final url = Uri.parse('https://linkishere.com/all?page=1'); try { final response = await http.get(url, headers: headers); if (response.statusCode == 200) { print(response.body); } else { print('请求失败: ${response.statusCode} - ${response.reasonPhrase}'); } } catch (e) { print('异常信息: $e'); } }检查代理设置
若设备开启了代理,而Postman未使用代理,会导致主机解析失败。关闭设备的代理设置后重新测试。
内容的提问来源于stack exchange,提问作者user21497668
相关产品推荐
相关产品推荐

