2016-10-06 4 views
0

다음 방법으로 POST 요청을 보내려고하고 요청을 보낼 때 HTTP 응답 코드를 반환하려고합니다. 문제RestTemplate의 postForObject 요청을 즉시 보낸 후 종료

코드 :

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를 생성, 결국 RestTemplate의 postForObject을 사용하여 POST를 전송하고 있습니다. 내 문제는 여기에 POST 요청을 보내면 프로그램이 즉시 종료되고 (명령 줄에서 실행 됨) 응답 코드로 아무 것도 할 수 없다는 것입니다. 나는 이것이 다르게하고 있어야만하는 무언가가 postForObject에 대한 예상 된 동작이라는 온라인 문서를 찾을 수 없다.

감사합니다.

답변

0

postForObject()가 null을 반환한다는 문제가있었습니다. 나중에 문제를 숨기는 예외 포수가 있었어.

내가 대신 null을 반환하지 않았습니다 postForEntity를 사용하고, 나는 다음과 같은 블록을 사용하여 HTTP 상태 코드를 얻을 수있었습니다 :

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