Spring Реакция ответа RestTemplate

Я не знаком с Spring RestTemplate.

Но для этого проекта я должен использовать Spring RestTemplate для отправки вызова POST, чтобы использовать rest api.

Я использую этот код:

String restCall = restTemplate.postForObject(url+restParm, null, String.class);

Это нормально работает.

Я хотел бы получить код состояния HTTP (например: 200 OK.). Как я мог это сделать? Спасибо.

Ответы

Ответ 1

Вы используете метод postForEntity следующим образом:

ResponseEntity<String> response = restTemplate.postForEntity(url+restParm, null, String.class);
HttpStatus status = response.getStatusCode();
String restCall = response.getBody();

Ответ 2

Это будет довольно странно, если RestTemplate не сможет получить ответ, как предложили другие. Это просто неправда.

Вы просто используете метод postForEntity, который возвращает

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/ResponseEntity.html

И, как предполагает документация, объект ответа имеет статус.

Ответ 3

Я хотел бы поделиться своим опытом использования Spring RestTemplate. Это действительно заняло меня много времени, чтобы исправить это. Мое требование: 1) Отправьте POST на серверURI с параметрами, установленными в теле HTTP. Параметры должны быть обернуты как данные формы. 2). Получите ответ с данными JSON в теле ответа, а настраиваемое имя класса передается в restTemplate. Результат: Alwasy получил NULL тело в ответ.

Я искал на веб-сайте и устал от всех предложений. тело все еще пусто. Поэтому я попытался сказать Spring просто вернуть String ко мне вместо myCustomized Class. Я видел, что строка JSON возвращается. Итак, причина, по которой тело ответа равно null, состоит в том, что Spring не может разобрать JSON для моего настраиваемого класса.

Наконец, я исправил проблему с NULL-корпусом, добавив аннотацию @JsonProperty в мое настроенное определение класса. (Я использовал @SerializedName в своем настраиваемом классе до и Spring не может разобрать JSON на мой объект)