发送请求后,RestTemplate的postForObject立即终止

时间:2016-10-06 23:10:31

标签: post resttemplate httpentity

我正在尝试使用以下方法发送POST请求,并在发送请求时返回HTTP响应代码。

有问题的代码:

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的预期行为,这里有什么我应该做的不同吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

手头的问题是postForObject()返回null。我后来有一个异常捕手,就是隐藏了这个问题。

我改为使用postForEntity,它没有返回null,我能够使用以下块获取HTTP状态代码:

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