1.报错原因:
在使用RestTemplate调用第三方API,在本地测试正常,但是部署到服务器上的时候就报:Dan,19:06 org.springframework.web.client.ResourceAccessException: I/O error on POST request for "XXX": No route to host (Host unreachable); nested exception is java.net.NoRouteToHostException: No route to host (Host unreachable)
,开始以为是没设置超时时间,通过网上的方法进行配置:
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(10*1000);
requestFactory.setReadTimeout(10*1000);
RestTemplate rest = new RestTemplate(requestFactory);
部署上去还是报错
2.解决方案
最后将设置超时时间的接口换成HttpComponentsClientHttpRequestFactory
顺利解决问题
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(10*1000);
requestFactory.setReadTimeout(10*1000);
RestTemplate rest = new RestTemplate(requestFactory);