如何使用http包的get()方法?调用OpenWeatherMap API遇解析错误
解决OpenWeatherMap API请求时的Failed host lookup错误
你遇到的Failed host lookup: 'api.openweathermap.org'错误是主机解析失败导致的,以下是几个可行的解决方向:
添加网络权限
安卓项目需要在android/app/src/main/AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />iOS项目若遇到HTTPS访问异常,可在
ios/Runner/Info.plist中添加网络访问配置:<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>验证设备网络状态
- 模拟器:重启模拟器,或切换电脑的网络连接方式(如WiFi转有线)后重试
- 真机:检查是否开启飞行模式,用手机浏览器直接访问你的API URL,确认网络能正常连接到OpenWeatherMap服务器
优化URL构建方式
避免手动拼接字符串,改用Uri.https构造器自动处理参数编码,减少格式错误:Uri uri = Uri.https( 'api.openweathermap.org', '/data/2.5/weather', { 'lat': latitude.toString(), 'lon': longitude.toString(), 'appid': apiKey } ); try { final response = await http.get(uri); // 后续处理逻辑 } on Exception catch (e) { print("请求错误: $e"); }关闭代理或VPN
如果设备开启了代理或VPN,可能会干扰DNS解析,关闭后再尝试请求
内容的提问来源于stack exchange,提问作者Mikelenjilo
相关产品推荐
相关产品推荐

