Запрос API к внешней системе выполняется в цикле с итерациями, каждый раз передающими идентификаторы по одному и тому же URL. Это запрос GET, и код выглядит следующим образом.
super.getRestTemplate().getMessageConverters().add(super.generateJacksonConverter());
final HttpHeaders headers = new HttpHeaders();
headers.add(KeyConstants.API_KEY, "");
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
final HttpEntity<String> entity = new HttpEntity<>(headers);
final String URL = URLConstants.URL + ID + "?param=true";
LOGGER.info(URL);
final ResponseEntity<String> result =
super.getRestTemplate().exchange(URL, HttpMethod.GET, entity, String.class);
subObj = new JSONObject(result.getBody());....
Код работает хорошо в течение примерно 300 итераций, а затем неожиданно начинает выдавать запрос 400 BAD. Если заглянуть глубже в исключение, он выдаст 403 Unauthorized для запроса.
Ошибка
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:730)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:688)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:644)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:564)