5

服务器中可以正常访问 但是代码中就是UnknownHostException

 3 years ago
source link: https://www.oschina.net/question/1175066_2322016
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

服务器中可以正常访问 但是代码中就是UnknownHostException

zgw06629 发布于 昨天 14:55

线上遇到问题 调用接口超时 看应用日志 有如下错误

java.net.UnknownHostException: xxx.com
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_91]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_91]
        at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_91]
        at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_91]
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180) ~[na:1.8.0_91]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_91]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_91]
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_91]
        at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_91]
        at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_91]

但命令行用curl 访问是正常的 奇怪应用日志中就一直都是这个报错 应用对应的java代码是

        RestTemplate restTemplate=new RestTemplate();
        JSONObject jsonObject = restTemplate.getForEntity(url, JSONObject.class, uriVariables).getBody();

为什么curl明明可以访问 怎么代码就一直不正常呢 即使临时网络问题导致了UnknownHostException 但是不影响后续的调用啊

本地还特意验证了 故意弄了一个不存在的的域名 如正常域名是foo.com 故意改成foo1.com  然后等访问了几十次之后  再修改hosts 将其指向正常域名的ip 后面的请求就正常了 并不是一直都是报错


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK