当前位置: 首页 > 面试题库 >

Android java.net.UnknownHostException:无法解析主机(策略问题)

包建义
2023-03-14
问题内容

我有使用后台进程定期(例如每小时)连接到网络上的内容源以检查更新内容的android代码。当新用户下载该应用并首次运行时,在这种首次运行情况下,(目前看来,这似乎只是一个“似乎”),因为我们服务器的DNS尚未在设备上缓存,最初的一系列连接因可怕的UnknownHostException失败:主机未解析当然,应用程序稍后再试,并且(再次,“看起来像”)一切正常—也许是因为OS有时间来实际解决该问题。地址。

因此,我的问题是:(1)其他Android开发人员是否也在部署的应用程序中也看到了这种现象?第一次,一系列“主机未解决”问题在以后解决。(2)有没有人说过更好的“预热DNS”策略,以便可以进行第一个真正的连接?还是在遇到此异常时仅重试一些退避循环?我正在考虑有一个单独的线程尝试从我们的服务器中获取一个小的文本文件,并使其循环直到获得它为止,并且可能(不确定这部分)阻止其他传出网络连接,直到成功为止。

无论如何,我已经阅读了Stack Overflow上各种类似措词的问题的大部分答案,并向所有人保证

<uses-permission android:name="android.permission.INTERNET" />

在我的清单文件中设置:)


问题答案:

我在使用HttpUrlConnection时遇到了这种现象。我使用的是简单的解决方法-我在使用任何网址之前都会执行以下代码。

    try {
      InetAddress i = InetAddress.getByName(URLName);
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
    }
// ... actually using URLName

我第一次在这里获得UnknownHostException,但URL的下一次使用成功(DNS服务器返回正确的IP地址,我可以连接到服务器)。



 类似资料:
  • 问题内容: 我在Ubuntu操作系统上使用了2个容器:Gitlab-ce和gitlab-runner 容器名称是:和 我通过访问我的gitlab应用 我使用以下命令成功注册了跑步者: 然后,当我开始工作时,出现以下错误消息: 在这两个容器中,我都可以访问主机名。我认为问题来自无法解决主机的高山图像。 我该如何解决? 谢谢 编辑1 docker-compose.yml 编辑2 docker-comp

  • 我的android应用程序中的Amazon analytics正在尝试连接到此主机“mobileanalytics.eu-west-1.amazonaws.com”,但无法解决此问题,导致以下错误: I/AmazonHttpClient:无法执行HTTP请求:无法解析主机“mobileanalytics.eu-west-1.amazonaws.com”:没有与主机名10-12 14:05:34.8

  • 我已经检查了关于同一问题的大多数主题,但我找不到解决方案。 我的应用程序使用连接到一个服务,当我使用托管该服务的机器的IP地址时,它工作正常。但是,当我用主机名替换它时,它无法连接。我使用的连接方法非常标准: 例外情况是: JAVA网。UnknownHostException:无法解析主机“myHostname”:没有与主机名关联的地址 myHostname是我的实际主机名。 当我在我的电脑上使用

  • 问题内容: 我正在尝试使用CURL来获取页面的内容。正在执行获取的页面是https,并且正在尝试获取的页面也是https。我尝试的所有设置都出现错误“无法解析主机”。 有任何想法吗? 问题答案: 也许是DNS问题? 根据以下代码尝试您的网址:

  • 问题内容: 我正在尝试在我的机器(Ubuntu)上的docker上做一个詹金斯。 我必须访问我公司中的git repo。但是在詹金斯,我得到这个错误: 无法解析主机:gogs.mycompany.com 我认为这是DNS错误,因此我尝试像这样启动docker(使用–dns和–dns-search) sudo docker run -p 8080:8080 -p 50000:50000 -v / h

  • 我试图从这个地址: 服务器转移。co/api/v1 使用OKHttp库。运行以下代码后: 我收到以下警告,我无法解决。 JAVA网UnknownHostException:无法解析主机“server staging.co/api/v1”:没有与主机名关联的地址