【问题标题】:RestTemplate's postForObject Terminating Immediately After Sending RequestRestTemplate 的 postForObject 在发送请求后立即终止
【发布时间】:2016-10-08 02:40:44
【问题描述】:

我正在尝试使用以下方法发送 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 的预期行为,这里有什么我应该做的不同的事情吗?

谢谢!

【问题讨论】:

    标签: post resttemplate httpentity


    【解决方案1】:

    当前的问题是 postForObject() 返回 null。后来我有一个异常捕获器来隐藏问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2018-02-07
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多