2012-05-06 4 views
3
내가 서버에 데이터를 전송하고 있습니다

와 요청 후 HTTP 상태를 받고 난 적절한보기스프링 MVC

@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"; 
    } 

답변

4
ResponseEntity

을이 상태를 확인하고 제공하기 위해 HTTP 응답 상태를 수신 할 object에 HTTP 상태 코드가 포함되어 있습니다.

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

참조 : ResponseEntity JavaDoc을 잘못 무엇

// 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"; 
+0

나는 위의 코드에서 약간의 문제가 있다고 생각한다. 나는 항상 null이되도록 statusCode를 보았다. 나는 서버를보고있어 요청이 완료되었음을 알 수있다. 왜 그런지 알고 있니? –

+0

@AlexDowining Typo (필자는 result.getStatusCode 대신 entity.getStatusCode를 입력했습니다). 편집 된 버전을 사용해보고 더 잘 작동하는지 확인하십시오. – erikxiv

+0

나는 이것을 시도하고 있지만 ResponseEntity에서 예외를 취하고있다 result = restTemplate.exchange ("http : //www.../user/login/", HttpMethod.POST, entity, Login.class) ; 그리고 난 줄을 실행할 수 없습니다 : statusCode = result.getStatusCode(); –

5

.

BTW 여기처럼 == 연산자를 사용하여 문자열을 비교해서는 안 : 자바에서

또한
"OK".equals(status) 

메소드 이름은 소문자로 시작하는 경향이 :

status=="OK" 

대신 다음과 같은 관용구를 사용합니다.