Получать статус HTTP после запроса с Spring MVC

я отправляю данные на сервер и хочу получить статус ответа HTTP, чтобы проверить этот статус и предоставить соответствующее представление

<code>   @RequestMapping(method = RequestMethod.POST)
     public String Login(@ModelAttribute("Attribute") Login login, Model model,HttpServletRequest request) {

          // Prepare acceptable media type
          ArrayList<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
          acceptableMediaTypes.add(MediaType.APPLICATION_XML);

          // Prepare header
          HttpHeaders headers = new HttpHeaders();
          headers.setAccept(acceptableMediaTypes);

          HttpEntity<Login> entity = new HttpEntity<Login>(login, headers);

          // Send the request as POST
          try {
           ResponseEntity<Login> result = restTemplate.exchange("http://www.../user/login/", 
                   HttpMethod.POST, entity, Login.class);
          } catch (Exception e) {
          }
      //here i want to check the received status
      if(status=="OK"){
         return "login"
      }
      else          
      return "redirect:/home";
     }
</code>

Ответы на вопрос(2)

Решение Вопроса

The ResponseEntity объект содержит код состояния HTTP.

// Prepare acceptable media type
ArrayList<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_XML);

// Prepare header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);

HttpEntity<Login> entity = new HttpEntity<Login>(login, headers);
// Create status variable outside of try-catch block
HttpStatus statusCode = null;

// Send the request as POST
try {
  ResponseEntity<Login> result = restTemplate.exchange("http://www.../user/login/", 
  HttpMethod.POST, entity, Login.class);
  // Retrieve status code from ResponseEntity
  statusCode = result.getStatusCode();
} catch (Exception e) {
}
// Check if status code is OK
if (statusCode == HttpStatus.OK) {
  return "login"
}
else          
  return "redirect:/home";
 Alex Dowining08 мая 2012 г., 14:58
Я пытаюсь это сделать, но я делаю исключение в ResponseEntity <Login> result = restTemplate.exchange ("../Логин пользовател ", HttpMethod.POST, entity, Login.class); и я не могу выполнить строку: statusCode = result.getStatusCode ();
 Alex Dowining07 мая 2012 г., 01:17
Я думаю, что в приведенном выше коде есть небольшая проблема. Когда я пытаюсь это сделать, я вижу, что statusCode всегда будет нулевым. Я смотрю на сервер и вижу, что запрос выполнен. У тебя есть идеи почему?
 erikxiv08 мая 2012 г., 17:32
@ AlexDowining Я добавил инициализацию переменной statusCode в null. Если выдается исключение, переменная останется нулевой (или вы можете вручную установить определенный код состояния в блоке catch.
 Alex Dowining09 мая 2012 г., 00:54
Привет, парень, и спасибо за ответы. На самом деле моя проблема в том, что я беру исключение и, таким образом, statusCode = result.getStatusCode (); не может быть выполнен. Если вы хотите, вы можете посмотреть здесь: / Stackoverflow.com вопросы / 10507650 / ...
 erikxiv07 мая 2012 г., 08:40
@ AlexDowining Typo (я набрал entity.getStatusCode вместо result.getStatusCode). Попробуйте с отредактированной версией и посмотрите, работает ли она лучше.

Что случилось с

HttpStatus status = result.getStatusCode();
if(status == HttpStatus.OK)

Видеть:ResponseEntity JavaDoc.

Кстати, вы не должны сравнивать строки, используя== оператор как здесь:

status=="OK"

Вместо этого используйте следующую идиому:

"OK".equals(status)

Также имена методов в Java, как правило, начинаются со строчных букв.

Ваш ответ на вопрос