【问题标题】:OKHTTP Unable to resolve host No address associated with hostnameOKHTTP 无法解析主机 没有与主机名关联的地址
【发布时间】:2018-12-04 19:56:13
【问题描述】:

我们发布了一个移动应用程序,但我们的一些用户无法连接到我们的应用程序。首先,我们猜测这是一个 dns 问题,因此我们将 DNS 从 Digital Ocean 更改为 Cloudflare,但它没有解决任何问题。 在 Android 设备上,我们使用 Retrofit 2.4 连接到我们的服务器。但是我们的一些用户无法连接到服务器,但他们可以在服务器上 ping,并且可以在浏览器中打开网站,但他们只能通过 vpn 连接。

我们从 firebase 获得了这个异常,我们使用 Retrofit 2.4.0OKHTTP 3.10.0。他们的问题在 github 或网络上都没有。

Non-fatal Exception: java.net.UnknownHostException
Unable to resolve host "jomlex.com": No address associated with hostname
java.net.Inet6AddressImpl.lookupHostByName (Inet6AddressImpl.java:125)
java.net.InetAddress.getAllByName (InetAddress.java:752)
okhttp3.Dns$1.lookup (Dns.java:40)
okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:185)
okhttp3.internal.connection.RouteSelector.nextProxy (RouteSelector.java:149)
okhttp3.internal.connection.RouteSelector.next (RouteSelector.java:84)
okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:214)
okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:126)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:200)
okhttp3.RealCall$AsyncCall.execute (RealCall.java:147)
okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
java.lang.Thread.run (Thread.java:762)
Caused by android.system.GaiException
android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
libcore.io.Posix.android_getaddrinfo (Posix.java)
libcore.io.ForwardingOs.android_getaddrinfo (ForwardingOs.java:55)
java.net.Inet6AddressImpl.lookupHostByName (Inet6AddressImpl.java:106)
java.net.Inet6AddressImpl.lookupAllHostAddr (Inet6AddressImpl.java:74)
java.net.InetAddress.getAllByName (InetAddress.java:752)
okhttp3.Dns$1.lookup (Dns.java:40)
okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:185)
okhttp3.internal.connection.RouteSelector.nextProxy (RouteSelector.java:149)
okhttp3.internal.connection.RouteSelector.next (RouteSelector.java:84)
okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:214)
okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:126)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:200)
okhttp3.RealCall$AsyncCall.execute (RealCall.java:147)
okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
java.lang.Thread.run (Thread.java:762)

【问题讨论】:

  • 在我看来是 Internet 连接问题而不是编码问题
  • 这个问题的一般原因是大多数情况下的权限。您是否在清单文件中添加 Internet 权限?
  • @JonasLochmann 我不这么认为,当他们尝试连接时,他们正在支持聊天,我确定他们有 Internet 连接。
  • @RutvikBhatt 是的,我说我们的一些用户无法连接,但他们可以连接 vpn,他们抛出这个异常,我认为 OKHTTP 中的 dns 有问题。
  • @HoseinIT 你是如何解决这个问题的?我们的一些用户可以连接 VPN,这很奇怪!

标签: android retrofit2 okhttp3


【解决方案1】:

你错过的是超文本,你应该使用完整的 url,这样 系统可以知道您是连接到本地 PC 还是连接到服务器。本地 url 可能是 C://jomlex.com/ 或远程可能是 https://jomlex.com/

由于您使用的是远程,请使用 https://jomlex.com/

【讨论】:

  • 我们使用jomlex.com 而不是 jomlex.com,但在异常中它只显示 jomlex.com
【解决方案2】:

这似乎是互联网连接本身的问题。如果您使用的是安卓模拟器,请确保模拟器中的其他应用可以真正连接到互联网!

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 2017-12-04
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2016-02-12
    相关资源
    最近更新 更多