背景:我有一个RestTemplate需要发送http请求而且还要设置超时,但是发现一只失败。
直接看代码
final RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(3));
restTemplateBuilder.setReadTimeout(Duration.ofSeconds(3));
final RestTemplate template = new RestTemplate(restTemplateBuilder.buildRequestFactory());
final ResponseEntity<String> forEntity = template.getForEntity("https://www.google.com/", String.class);
System.out.println(forEntity.getBody());
不看RestTemplateBuilder的源码看着还挺正常的,set方法设置超时。然后build。最后一只没效果。
注意看setConnectTimeout他有返回方法的所以每次都会返回一个RestTemplateBuilder方法。
正确写法
final RestTemplate restTemplate = restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(3)).setReadTimeout(Duration.ofSeconds(3)).build();
final ResponseEntity<String> responseEntity = restTemplate.getForEntity("https://www.google.com/", String.class);
System.out.println(responseEntity.getBody());