小公司,免费的Dns解析,有几率遇到域名解析异常(UnknownHostException),但通过IP访问又不方便(比如热备切换后,若IP变化,APP会直接连不上)。这里提供一种域名+IP的解析方法。

Okhttp其实已经提供了Dns解析方法

ApiDns

class ApiDns private constructor() : Dns {override fun lookup(hostname: String): List<InetAddress> {return try {//尝试系统默认解析Dns.SYSTEM.lookup(hostname)} catch (e: UnknownHostException) {//这里的hostname.contains,包含的是服务器域名if (hostname.contains("xxxx.com")) {"[DNS] $hostname 解析异常,尝试使用IP = $SERVER_IP".errorLog()InetAddress.getAllByName(SERVER_IP).asList()} else {throw e}}}companion object {// 这个值可以在网络正常时从服务器更新下来,SP、MMKV、SQL等保存在本地,随时更新private const val SERVER_IP = "47.xxx.xxx.88"val INSTANCE: ApiDns by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { ApiDns() }}
}

然后在Okhttp里引用就行了

 Retrofit.Builder().baseUrl(url).client(OkHttpClient.Builder().apply {// 主要是这行dns(ApiDns.INSTANCE)connectTimeout(20, TimeUnit.SECONDS)readTimeout(20, TimeUnit.SECONDS)writeTimeout(20, TimeUnit.SECONDS)addInterceptor(HttpLoggingInterceptor { message ->takeIf { AppUtils.isAppDebug() }?.let { message.networkLog() }}.apply { level = HttpLoggingInterceptor.Level.BODY })retryOnConnectionFailure(true)}.build()).addConverterFactory(ScalarsConverterFactory.create()).addConverterFactory(GsonConverterFactory.create()).build().create(ApiService::class.java)

原帖地址,转载请注明:https://blog.csdn.net/hx7013/article/details/111939812

Retrofit(Okhttp)Dns解析服务器域名异常时尝试使用服务器IP访问相关推荐

  1. DNS解析-连接域名与服务器IP

    目录 一.DNS解析-连接域名与服务器IP (一)前言 (二)准备工作 1.腾讯云地址:腾讯云 产业智变·云启未来 - 腾讯 2.腾讯云账号,可以用微信扫码登录 (三)DNS解析 1.进入腾讯云控制台 ...

  2. 使用IPv6 DNS解析IPv6域名(不必修改hosts文件)

    原文地址为: 使用IPv6 DNS解析IPv6域名(不必修改hosts文件) 很多网站,例如google,都是IPv4和IPv6双线接入的,www.google.com解析对应许多个IP,其中IPv4 ...

  3. 小程序修改服务器域名多久生效,小程序 服务器域名配置多久生效

    小程序 服务器域名配置多久生效 内容精选 换一换 依照配置并导入样例工程中导入和修改样例后,即可在开发环境中,右击"JDBCExample.java",选择"Run 'J ...

  4. 为啥GE云盒老显示服务器出现异常,ge云盒服务器出现异常

    ge云盒服务器出现异常 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 远程登录 ...

  5. 主服务器连接异常帮助修复,LOL服务器连接异常怎么解决

    LOL英雄联盟提示"服务器连接异常,即将退出,请重新连接游戏",对此该如何解决呢?下面是学习啦小编收集整理的LOL服务器连接异常怎么解决,希望对大家有帮助~~ LOL服务器连接异常 ...

  6. openwt dns 解析部分域名出错问题。

    背景: 公司项目更换访问域名导致网络访问异常,nds设置都没有问题. 问题描述 能ping 百度等外网地址就是ping不了服务的域名,并且任何的内网地址ip地址都可ping通.同时如果设备在外网又是可 ...

  7. 本地服务器域名位置,怎么查看本地服务器域名服务器地址

    怎么查看本地服务器域名服务器地址 内容精选 换一换 公网域名解析是基于Internet网络的域名解析过程,可以把人们常用的域名(如www.example.com)转换成用于计算机连接的IP地址(如1. ...

  8. Nginx 多域名多网站绑定及禁止IP访问

    lnmp 服务器架设好,配置nginx,实现多个网站分别绑定各个域名 这里以域名:www.mysite.com为例 1.在/usr/local/nginx/conf/vhost文件夹中创建mysite ...

  9. 常见的DNS记录类型有哪些?如何查询DNS解析记录?

    当搭建一个新网站时,DNS查询工具对查询网站DNS解析记录方面很有帮助.除了在设置新网站时有用外,正确的DNS对于更新现有网站的记录以及检查邮件服务器(如公司内部邮件网络)的设置也是必不可少的. DN ...

  10. cmd显示服务器对区域没有权威,查询dns解析服务器地址cmd命令

    查询dns解析服务器地址cmd命令 内容精选 换一换 一次完整的HTTP请求包括域名解析.建立TCP连接.发起请求.服务器接收到请求进行处理并返回处理结果.浏览器对HTML代码进行解析并请求其他资源, ...

最新文章

  1. 贝聊运维自动化体系演化
  2. Applese 走方格
  3. Java关于 class类的基础方法
  4. Java8 新特性简介
  5. 【开源项目】基于C++使用ffmpeg和QT开发播放器
  6. beautifulsoup获取属性_Python爬虫常用模块:BeautifulSoup
  7. 6折入股蚂蚁金服?巨人网络如此回应
  8. max6675一直读0_女儿读完我要收藏起来的英文杂志,它让0~15岁孩子阅读无缝对接!...
  9. mint-UI上拉加载下拉刷新和fastclick冲突问题解决
  10. Anaconda3创建、删除虚拟环境(win10)
  11. php 小写数字转大写,php 小写数字怎么转大写
  12. jQuery中id包含特殊字符,以及包含变量时处理。
  13. 金蝶与旺店通集成解决方案(金蝶为主)
  14. 计算机网络语音传输杂音回音,Win10系统中QQ语音有回音噪音该如何解决?
  15. Pygame实战之外星人入侵NO.9——消灭外星人
  16. Python读取键盘输入到一维列表及二维列表
  17. matlab算sma,如何计算简单移动平均线(SMA)
  18. 机器学习面试必考面试题汇总—附解析
  19. 356 次小生成树(求解最近公共祖先优化)
  20. 一个网站一级域名已经备案,二级域名还要不要备案啊?

热门文章

  1. 网易互娱游戏研发工程师笔试
  2. python极速入门(适合有基础)
  3. Kafka配置broker映射错误报错Discovered coordinator xxx rack: null
  4. 语音数字信号处理技术应用 --- 创新点头脑风暴
  5. Spring 源码解析 七(aop )
  6. java你好代码_Java 基础——1 向Java世界说你好
  7. 信息安全技术国家相关标准一览表
  8. python求解函数偏导数sympy
  9. CapstoneCS5211,CS5212,CS5256,CS5811,CS5288,……型号大全
  10. python程序下载腾讯企业邮箱附件_python批量下载邮件附件