dart 未行程的例外状况:SocketException:主机查找失败:(操作系统错误:没有与主机名关联的地址,errno = 7)

ef1yzkbh  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(523)

我们已经有一个发布版本在playstore和它的工作刚刚好。但突然现在当我们试图再次构建和运行代码时,因为我们想添加新功能。它将不再与我们的后端通信。
所以我用这个错误作为关键字搜索了一下网络,看到需要互联网许可作为100%的结果和答案,我们已经没有帮助了。是的,我们在调试和实时清单中有它。
服务器已启动,我们可以在浏览器中访问它,以及 Postman 也挖掘命令

所以我在网上搜索了更多的东西都没有用,找到了关于代理问题的东西,我尝试了客户端和服务器端。我们没有代理

我们只使用简单的请求,像这样:

static Future getDriver(String phone){
   var url = baseUrl + "/mobile/driverPhone";
   return http.post(url,body: {
     "phone" : phone
   });
 }

也有一些建议说使用DIO,但我想知道原因之前,我放弃了这个http插件。有没有好心人能帮我解释一下?
P.S.我们在主通道上,这里有一些错误日志

flseospp

flseospp1#

错误SocketException: Failed host lookup: 'api.xyz.com' (OS Error: No address associated with hostname, errno = 7)通常意味着您的DNS查找失败。从错误本身来看,OS Error通常是一个系统级错误,与http或Dart/Flutter无关。
您可能需要调整DNS中的某些设置。此外,如果您使用的是Mac/Linux系统,您可以运行dig api.xyz.com来查看是否解决了这个问题。
在实际设备中运行您的应用程序也是可能的,因为由于DNS设置或您正在使用的虚拟设备未连接到互联网,可能会在虚拟设备中出现错误。您将能够隔离问题。

vsmadaxz

vsmadaxz2#

我可能会迟一点给出答案,但出现这个错误还有另一个原因。
失败的主机查找本质上是指您拥有URL,但无法连接到资源。这不是代码错误,而是尚未处理的加载/网络问题。
其原因可能包括:

  • 获取图像时未连接互联网
  • 正如之前的回答所说,不给互联网权限可能是一个原因。

以下只是如何“处理”此错误的示例。主要思想是在镜像未加载时进行异常处理。在本例中为CircleAvatar Widget的foregroundImage属性。

CircleAvatar(
  foregroundImage: NetworkImage("Your-image-Url"),
  onForegroundImageError: (exception, stackTrace) => {} // If the Image does not load due to network error
);

相关问题