简体   繁体   English

restTemplate.getForEntity()获取连接超时

[英]restTemplate.getForEntity() get connect timed out

I use RestTemplate to call a remote api get data and occur an error java.net.SocketTimeoutException: connect timed out . 我使用RestTemplate调用远程api获取数据并发生错误java.net.SocketTimeoutException: connect timed out But when I use Postman, I get the data ( status=200 time=167ms ) 但是当我使用Postman时,我得到了数据( status=200 time=167ms

here is the code: 这是代码:

Sting url = "http://XXX.XXX.XXX.XX:8080/api/v1/resources?ak={ak}&ruleno={ruleno}&limit={limit}&offset={offset}&time={time}&ts={ts}&trace_id={trace_id}&sign={sign}";

Map<String, String> urlMap = new HashMap<>();
   urlMap.put("ak", ak);
   urlMap.put("ruleno", ruleNo);
   urlMap.put("limit", limit);
   urlMap.put("offset", offset);
   urlMap.put("time", time);
   urlMap.put("ts", ts);
   urlMap.put("trace_id", traceId);
   urlMap.put("sign", sign);
ResponseEntity<HashMap> result = restTemplate.getForEntity(url, HashMap.class, urlMap);

the error is: 错误是:

java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_191] at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_191] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_191] java.net.SocketTimeoutException:java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)处的java.net.DualStackPlainSocketImpl.waitForConnect(本机方法)〜[na:1.8.0_191]超时〜[na:1.8。 0_191],位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)〜[na:1.8.0_191]

I have a proxy in browser, so I can use Postman to call the api , but when I use java code I have not proxy, so I can't access the api . 我在浏览器中有一个代理,因此我可以使用Postman调用api ,但是当我使用java代码时,我没有代理,因此无法访问api

use this solve the problem: 用这个解决问题:

SimpleClientHttpRequestFactory clientHttpRequestFactory = new SimpleClientHttpRequestFactory();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("my.proxy.com", 9999));
clientHttpRequestFactory.setProxy(proxy);

RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM