【问题标题】:Java RestTemplate hangs on 204 status code responseJava RestTemplate 挂起 204 状态码响应
【发布时间】:2018-10-09 12:13:50
【问题描述】:

我正在创建测试框架并使用 RestTemplate 类创建 HTTP 请求。

一般情况下我使用下一个代码:

Response response = null;
    ResponseEntity<String> responseEntity = null;

    try{
        responseEntity = getRest().exchange(url, httpMethod, httpEntity, String.class);
        response = new Response(
                responseEntity.getStatusCodeValue(),
                responseEntity.getStatusCode().getReasonPhrase(),
                responseEntity.getBody(),
                responseEntity.getHeaders()
        );
    } catch (HttpStatusCodeException e){
        response = new Response(
                e.getRawStatusCode(),
                e.getStatusText(),
                e.getResponseBodyAsString(),
                e.getResponseHeaders()
        );
    }

它适用于所有情况,除了接收 204 状态代码和空正文作为响应的 DELETE HTTP 方法。

现在,我必须重新初始化 RestTemplate 来修复它。但我希望应该存在另一种方式。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: java httprequest resttemplate rest-client spring-web


    【解决方案1】:

    请检查您是否将 HttpMethod.Delete 用于 httpMethod,并在您使用 delete 作为交换的最后一个参数时尝试,而不是 String.class 而是 Void.class。

    希望对你有帮助。

    【讨论】:

    • 我这样做了 if (httpMethod.matches("DELETE")){ getRest().exchange(url, httpMethod, httpEntity, Void.class); }else { responseEntity = getRest().exchange(url, httpMethod, httpEntity, String.class); } 没有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2011-12-21
    • 2017-09-05
    • 2023-03-10
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多