android - crashlytics 上的常量 Dns.java 第 5 行错误
问题描述
我在我的应用程序中实现了我的 okhttp 客户端,如下所示:
fun getOkhttpClient(): OkHttpClient {
val chuckerCollector = ChuckerCollector(
context = MyApplication.appInstance!!,
// Toggles visibility of the push notification
showNotification = BuildConfig.DEBUG,
// Allows to customize the retention period of collected data
retentionPeriod = RetentionManager.Period.ONE_WEEK
)
// Create the Interceptor
val chuckerInterceptor = ChuckerInterceptor.Builder(MyApplication.appInstance!!)
// The previously created Collector
.collector(chuckerCollector)
// The max body content length in bytes, after this responses will be truncated.
.maxContentLength(250_000L)
.alwaysReadResponseBody(BuildConfig.DEBUG)
.build()
val executorService: ExecutorService =
ThreadPoolExecutor(20, 20, 1, TimeUnit.HOURS, LinkedBlockingQueue())
val myDispatcher = Dispatcher(executorService)
return OkHttpClient.Builder()
.connectTimeout(15000, TimeUnit.MILLISECONDS)
.retryOnConnectionFailure(true)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.protocols(listOf(Protocol.HTTP_1_1))
.addInterceptor(HeaderInterceptor())
.addInterceptor(chuckerInterceptor)
.dispatcher(myDispatcher)
.apply {
if (BuildConfig.DEBUG) {
val logging = HttpLoggingInterceptor()
logging.setLevel(HttpLoggingInterceptor.Level.BODY)
addInterceptor(logging)
}
}
.build()
}
第一次打开应用程序一切正常。将应用程序置于后台大约 30 到 40 分钟,然后返回应用程序。调用任何api,它会给 -
非致命异常:java.net.UnknownHostException 无法解析主机“host_url”:没有与主机名关联的地址 java.net.Inet6AddressImpl.lookupHostByName (Inet6AddressImpl.java:157) java.net.Inet6AddressImpl.lookupAllHostAddr (Inet6AddressImpl.java:105 ) java.net.InetAddress.getAllByName (InetAddress.java:1154) okhttp3.Dns$Companion$DnsSystem.lookup (Dns.java:5) okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:133) okhttp3.internal .connection.RouteSelector.nextProxy (RouteSelector.java:20) okhttp3.internal.connection.RouteSelector.next (RouteSelector.java:17) okhttp3.internal.connection.ExchangeFinder.findConnection (ExchangeFinder.java:196) okhttp3.internal.connection .ExchangeFinder.findHealthyConnection (ExchangeFinder.java) okhttp3.internal.connection.ExchangeFinder。找到 (ExchangeFinder.java:47) okhttp3.internal.connection.RealCall.initExchange$okhttp (RealCall.java:31) okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:11) okhttp3.internal.http.RealInterceptorChain。继续 (RealInterceptorChain.java:166) okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:191) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.http.BridgeInterceptor.intercept ( BridgeInterceptor.java:167) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:34) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain. java:166) com.chuckerteam.chucker.api.ChuckerInterceptor.intercept (ChuckerInterceptor.java:9) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) com.pharmasentinel.medsii.retrofit.HeaderInterceptor.intercept (HeaderInterceptor.java:37) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain. java:166) okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker ( ThreadPoolExecutor.java:1167) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)继续 (RealInterceptorChain.java:166) okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent。 ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)继续 (RealInterceptorChain.java:166) okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent。 ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)
由 android.system.GaiException 引起 android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) libcore.io.Linux.android_getaddrinfo (Linux.java) libcore.io.BlockGuardOs.android_getaddrinfo (BlockGuardOs.java:172) java.net.Inet6AddressImpl。 lookupHostByName (Inet6AddressImpl.java:137) java.net.Inet6AddressImpl.lookupAllHostAddr (Inet6AddressImpl.java:105) java.net.InetAddress.getAllByName (InetAddress.java:1154) okhttp3.Dns$Companion$DnsSystem.lookup (Dns.java: 5) okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:133) okhttp3.internal.connection.RouteSelector.nextProxy (RouteSelector.java:20) okhttp3.internal.connection.RouteSelector.next (RouteSelector.java:17) okhttp3.internal.connection.ExchangeFinder.findConnection (ExchangeFinder.java:196) okhttp3.internal.connection.ExchangeFinder。findHealthyConnection (ExchangeFinder.java) okhttp3.internal.connection.ExchangeFinder.find (ExchangeFinder.java:47) okhttp3.internal.connection.RealCall.initExchange$okhttp (RealCall.java:31) okhttp3.internal.connection.ConnectInterceptor.intercept ( ConnectInterceptor.java:11) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:191) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain. java:166) okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:167) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java: 34)okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:166) com.chuckerteam.chucker.api.ChuckerInterceptor.intercept (ChuckerInterceptor.java:9) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) com.pharmasentinel.medsii.retrofit.HeaderInterceptor.intercept ( HeaderInterceptor.java:37) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall。运行 (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (线程.java:764)继续 (RealInterceptorChain.java:166) com.pharmasentinel.medsii.retrofit.HeaderInterceptor.intercept (HeaderInterceptor.java:37) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.connection.RealCall。 getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent。 ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)继续 (RealInterceptorChain.java:166) com.pharmasentinel.medsii.retrofit.HeaderInterceptor.intercept (HeaderInterceptor.java:37) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:166) okhttp3.internal.connection.RealCall。 getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent。 ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent。 ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)getResponseWithInterceptorChain$okhttp (RealCall.java:113) okhttp3.internal.connection.RealCall$AsyncCall.run (RealCall.java:51) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) java.util.concurrent。 ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:764)
我正在使用 try catch 从我的拦截器中记录。
打开任何其他应用程序,它们都可以正常工作。杀死应用程序并重新启动可以解决问题,有时在 wifi 和蜂窝之间切换也可以解决问题。
解决方案
推荐阅读
- ios - 可以只使用 TouchID 吗?
- html - 适合对象:包含;根据宽度百分比计算均匀高度?
- python - Django:使用 Fetch/Post 将 JSON 保存到数据库
- python - 正则表达式 - 非捕获组返回所谓的非捕获组,,?
- python - Tensorflow tf.squeeze 替代品
- mongodb - 如何将文件输出写入服务器
- java - 在 Spring-MVC 中显示 JSP 页面时出现问题
- python - pandas to_json 将日期格式更改为“纪元时间”
- python - Pytest - 如何在不设置测试的情况下从命令行传入文件以进行初步设置
- amazon-dynamodb - DynamoDB,更新多个嵌套地图属性