【问题标题】:SocketException: Failed host lookup: 'methods.abc.com' (OS Error: No address associated with hostname, errno = 7), StackTrace :SocketException:主机查找失败:'methods.abc.com'(操作系统错误:没有与主机名关联的地址,errno = 7),StackTrace:
【发布时间】:2021-04-19 03:42:02
【问题描述】:

我将 API 错误日志存储在我的数据库中。我在我的数据库中发现了很多错误。日志消息是一样的。

SocketException: Failed host lookup: 'xxx.abc.com' (OS Error: No address associated with hostname, errno = 7), StackTrace : 

顺便说一句,此错误仅发生在随机用户身上。不适合所有用户。

功能

  Future<dynamic> abc() async {
    var responseJson;
    try {
      final response = await http.post('${env.url}/xxx/xxx/xxx', headers: {'Authorization': 'Bearer xxx'});
      responseJson = _response(response, _errorMap);
      return responseJson;
    }
    catch (e, s) {
      errorLog.store('$e, StackTrace : $s', _errorMap);
      throw FetchDataException('message');
    }
  }

env.url 看起来像这样,https://xxx.abc.com

xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="xxx">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application ...

  http: ^0.12.2

【问题讨论】:

    标签: flutter http dart https


    【解决方案1】:

    这可能不是 Flutter 问题。相反,OS Error 的级别要低得多。

    首先,检查一下:Unable to resolve host "<url here>"; No address associated with hostname

    例如,如果您的用户关闭了他的 Wifi 和移动网络,那么您将看到此错误。

    一般不是你的代码有bug,而只是因为用户没有网络——如果他没有网络,他如何解析域名!

    因此,就我个人而言,我只是忽略了此类错误。换句话说,我不会向我的后端报告这些错误。

    【讨论】:

    【解决方案2】:

    确保您拥有有效的互联网连接以及 AndroidManifest.xml 中定义的权限

    【讨论】:

      【解决方案3】:

      在我的情况下,我打开了模拟器,然后我连接到了 WIFI。所以,wifi 连接到我的系统但无法连接到模拟器。

      解决方案:

      • 我关闭了模拟器并重新打开它。最后工作..

      【讨论】:

        【解决方案4】:

        在我的情况下,我重新启动了我的笔记本电脑,一切都很好。大部分时候重启电脑都会解决这样的问题。

        【讨论】:

          【解决方案5】:
          1. 首先我们应该有一个有效的互联网连接。

          2. 第二件事,我们应该在我们的安卓模拟器中启用 wifi。

          3. 接下来我们应该在 AndroidManifest.xml 中正确添加权限

          [颤振网络] :https://docs.flutter.dev/development/data-and-backend/networking

          <manifest xmlns:android...>
           ...
           <uses-permission android:name="android.permission.INTERNET" />
           <application ...
          </manifest>
          
          1. 然后,在我们完成这些步骤之后,我们应该重新启动模拟器并运行应用程序。

          【讨论】:

            猜你喜欢
            • 2021-08-31
            • 1970-01-01
            • 2020-11-29
            • 2019-09-28
            • 2023-03-26
            • 2020-05-10
            • 2019-07-12
            • 2021-05-09
            • 1970-01-01
            相关资源
            最近更新 更多