休息模板中具有 307 状态代码的空响应实体

Posted

技术标签:

【中文标题】休息模板中具有 307 状态代码的空响应实体【英文标题】:Null response entity with 307 status code in Rest Template 【发布时间】:2019-01-18 23:31:47 【问题描述】:

我正在尝试使用 Spring RestTemplateBuilder 调用 REST Web 服务和 POST 数据。这是我的代码示例。

public HttpHeaders getHttpHeaders() 
    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.add("Authorization", "Basic " + authToken);
    requestHeaders.add("Content-Type", "application/json");
    return requestHeaders;


public ResponseJson getData(RequestJson requestJson) 
    HttpEntity<RequestJson> entity = new HttpEntity<>(requestJson, getHttpHeaders());
    ResponseEntity<ResponseJson> result = restTemplateBuilder.build().postForEntity(PostUrl, entity, ResponseJson.class);

当我调试它时,它会为 ResponseEntity 提供 status=307body=null。但是当我直接使用请求正文调用 PostUrl 时,它会创建带有 201 状态代码的数据。

我可以知道如何找出这个 307 状态以及为什么我得到空响应吗?

【问题讨论】:

"所有现代浏览器都会自动检测 307 临时重定向响应代码并自动处理重定向到新 URI 的动作" 也许您还应该在代码中处理 307。 @Selindek 是的,但我不知道如何处理这个问题。我正在努力寻找解决方案。 【参考方案1】:

这对我有用,使用 HttpComponentsClientHttpRequestFactory https://lateralcoding.blogspot.com/2018/03/Spring-RestTemplate-AutoRedirect.html

【讨论】:

以上是关于休息模板中具有 307 状态代码的空响应实体的主要内容,如果未能解决你的问题,请参考以下文章

http响应

http状态吗307,303,302的区别

http状态吗307,303,302的区别

HTTP状态码302303和307的故事

cURL 可以检测到 307 响应吗?

反应应用程序中来自axios POST的空响应,rails服务器显示201状态