UnknownHostException: api.weixin.qq.com解决方法

在使用微信服务过程中(调用api.weixin.qq.com),总会碰到如下这种问题:
“java.net.UnknownHostException: api.weixin.qq.com: 未知的名称或服务”。
关键是这种问题偶尔出现,我们在测试环境甚至一次都没碰到,但在生产环境下却出现了,问题很难排查。查了好多方案都没有解决,私信询问了微信社区技术运营专员,也没见回音。最后通过分析实验出本文解决方法。

解决方案

1、vi /etc/resolv.conf做如下配置:

options timeout:1 attempts:1 rotate
#options single-request-reopen
nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 180.76.76.76
nameserver 223.5.5.5

2、chattr +i /etc/resolv.conf
  在有些Linux下,当网络重启后,/etc/resolv.conf会恢复到原来的状态。本命令是让文件编程只读。如果今后需要修改,用chattr -i /etc/resolv.conf
3、vi /etc/sysconfig/network-scripts/ifcfg-eth0
删掉DNS1,DNS2参数,都用resolv.conf中的配置
4、重新启动网络:service network restart
5、可以用nslookup查看哪个DNS生效
在这里插入图片描述

参数说明

options 后面跟的是各种参数,每个参数意义如下:
  timeout:设置等待dns服务器返回的超时时间,单位秒。默认值5。
  attempts:向DNS服务器发起域名解析的请求次数。默认值2。采用多个dns服务器轮询
  rotate:采用轮询方式访问nameserver
  single-request-reopen:CentOS6/CentOS7总是需要等待AAAA(IPv6)的结果,即使关闭IPv6也没什么卵用。CentOS 6/CentOS 7中的DNS解析器对于ipv4和ipv6都使用同一个socket接口,在同时发出ipv4和ipv6解析请求后,只会收到一个ipv4的解析响应,此时socket将一处于“等待”模式,等待ipv6的解析响应,故导致解析缓慢;添加single-request-reopen后就可以重新打开一个新的socket接收ipv6的解析响应,而不影响ipv4的解析响应。本参数详解见 http://coolnull.com/3820.html

nameserver:dns服务器,分别采用了腾讯的、114的、百度的、阿里的,总有一个可行。

补充说明

经验证关于options single-request-reopen配置在某些环境可以,但在某些环境下打开会导致错误如下:

java.net.UnknownHostException: www.xxx.cn: 未知的名称或服务
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)

该种情况下,关闭该选项即可。

这篇文章如果对您有所帮助或者启发的话,帮忙关注或点赞,有问题请评论,必有所复。您的支持是我写作的最大动力!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值