#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();