postForObject RestTemplate завершается сразу после отправки запроса

#post #resttemplate #httpentity

#Публикация #RestTemplate #HttpEntity

Вопрос:

Я пытаюсь отправить POST-запрос с помощью следующего метода и возвращаю код ответа HTTP при отправке запроса.

Рассматриваемый код:

 private ClientHttpRequestFactory getClientHttpRequestFactory() {
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
    clientHttpRequestFactory.setConnectTimeout(timeout);
    return clientHttpRequestFactory;
}

public int sendRequest() {
    RestTemplate request = new RestTemplate(getClientHttpRequestFactory());
    String URL = buildURL();
    HttpHeaders headers = buildHeaders();
    validatePayload();
    HttpEntity<String> postRequest = new HttpEntity<String>(requestPayload, headers);
    return request.postForObject(URL, postRequest, ResponseEntity.class).getStatusCodeValue();
}
  

Я создаю ClientHttpRequestFactory, чтобы я мог установить время ожидания и в конечном итоге отправить сообщение с помощью postForObject RestTemplate. Моя проблема здесь в том, что программа немедленно завершается (она запускается в командной строке) после отправки запроса POST, и я ничего не могу сделать с кодом ответа. Я не могу найти в Интернете никакой документации, в которой говорится, что это ожидаемое поведение для postForObject, есть ли здесь что-то, что я должен делать по-другому?

Спасибо!

Ответ №1:

Проблема заключалась в том, что postForObject() возвращал значение null. Позже у меня появился перехватчик исключений, который скрывал проблему.

Вместо этого я использовал postForEntity, который не возвращал null, и я смог получить код состояния HTTP, используя следующий блок:

 ResponseEntity<String> re = request.postForEntity(URL, postRequest, String.class);
HttpStatus status = re.getStatusCode();
statusCode = status.value();