UnknownHostException: api.weixin.qq.com 问题解决
最近把项目部署到Linux服务器上,发现本地调试好的微信扫码登录突然无法使用了,本地调试却正常!
查看项目日志,发现报错如下
[java] view plain copy
[java] view plain copy
- java.net.UnknownHostException: api.weixin.qq.com
- at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
- at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
- at java.net.Socket.connect(Socket.java:589)
- at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
- at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
- at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
- at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
- at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
- at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
- at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
- at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
- at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)
- at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
- at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
- at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
- at cn.jagl.mryt.util.HttpRequestUtilImpl.sendGet(HttpRequestUtilImpl.java:87)
- at cn.jagl.mryt.action.EmployeeAction.wxLogin(EmployeeAction.java:193)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:892)
- at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1537)...还有很多就不截了
这个错误是因为服务器无法识别api.weixin.qq.com这个域名
然后尝试分别在windows和服务器上ping 了一下这个域名,果然windows上可以ping通,而linux上不行,又试了几个常用的域名,结果一样。。。
解决方法
编辑etc下的resoly.conf文件(如果没有就新建一个)
[java] view plain copy
- vi /etc/resolv.conf
添加一行
[java] view plain copy
- nameserver 8.8.8.8
保存后重启网络服务
[java] view plain copy
- service network restart
然后应该就可以了
如出现问题,解决如下:
问题描述:CentOS 修改/etc/resolv.conf 执行service network restart后,/etc/resolv.conf又恢复到原来的状态
解决方法:/etc/resolv.conf保存DNS是暂时的,当重新启动network时,/etc/resolv.conf恢复到了初始状态,要想更改,可尝试下边的方法。
修改 /etc/sysconfig/network-scripts/ifcfg-eth0
在其中的加入你要添加的DNS,如下图
之后保存退出,执行server network restart,则在/etc/resolv.conf中会自动添加你刚才在ifcfg-eth0中添加 的DNS信息(如下图),且重启仍有效。