400 неправильных запросов на org.springframework после 300+ циклов итераций - PullRequest
0 голосов
/ 03 октября 2019

Запрос 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)
...