2016-10-06 208 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。我后来发现了一个异常捕捉器,这就隐藏了这个问题。

我代替postForEntity,这并没有返回null,我能够使用以下块获得HTTP状态代码:

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