当前位置: 首页 > 知识库问答 >
问题:

在控制器中返回错误时,Spring MVC ResponseEntity始终为空

周飞
2023-03-14

我有以下控制器:

@RequestMapping(value = "/api/activate", method = RequestMethod.POST)
public ResponseEntity testPost(@RequestBody ActivationRequest activationRequest) {
    try {
        // do stuff
        return ResponseEntity.status(HttpStatus.OK)
                .body(result.toString());
    } catch (ApiException e) {
        logger.error("error executing command", e);
        return ResponseEntity.status(HttpStatus.BAD_REQUEST)
                .body(e.getMessage());
    }
}

当响应为HttpStatus时。好的,我可以读取客户端中的字符串响应:

22:34:34.416 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
22:34:34.417 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Thu, 11 Oct 2018 04:34:29 GMT[\r][\n]"
22:34:34.417 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Type: text/plain;charset=utf-8[\r][\n]"
22:34:34.417 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Length: 11[\r][\n]"
22:34:34.417 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
22:34:34.417 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "OK[ont = 6]"
22:34:34.422 [main] DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 200 OK
22:34:34.422 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Date: Thu, 11 Oct 2018 04:34:29 GMT
22:34:34.422 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Type: text/plain;charset=utf-8
22:34:34.422 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Length: 11

但是当我返回Httpstatus时。BAD_REQUEST响应总是空的:

22:35:54.307 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 400 Bad Request[\r][\n]"
22:35:54.308 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Thu, 11 Oct 2018 04:35:51 GMT[\r][\n]"
22:35:54.308 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Length: 0[\r][\n]"
22:35:54.308 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
22:35:54.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 400 Bad Request
22:35:54.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Date: Thu, 11 Oct 2018 04:35:51 GMT
22:35:54.311 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Length: 0

即使e.getMessage()具有消息的有效字符串。

这是我用于使用此服务的代码:

private static void testPost(ActivationRequest result) {
    try (CloseableHttpClient client = HttpClients.createDefault()) {
        HttpPost httpPost = new HttpPost("http://localhost:8080/api/activate");
        String json = new Gson().toJson(result);
        StringEntity entity;
        entity = new StringEntity(json);
        httpPost.setEntity(entity);
        httpPost.setHeader("Content-type", "application/json");
        CloseableHttpResponse response = client.execute(httpPost);
        String entityString = EntityUtils.toString(response.getEntity());
        if (response.getStatusLine().getStatusCode() == 200) {
            System.out.println(response.getStatusLine().getReasonPhrase() + ":" + entityString);
        } else {
            System.out.println(response.getStatusLine().getReasonPhrase() + ":" + entityString);
        }
    } catch (Exception e) {

    }
    //
}

共有1个答案

壤驷建德
2023-03-14

我的错误。。。。getMessage()为null,因此响应始终为空。

 类似资料:
  • 我一直在使用Processing 3.0,我试图在Arduino输出某些值时打印一个简单的时间戳,但它不起作用。我尝试使用SimpleDataFormat,但它总是返回,而不是实际时间。以下是MVCE: 输出示例: 我怀疑问题出在,因为,如果我将这些值插入在线epoch转换器,我会得到正确的时间。上述代码中的问题是什么?

  • 我想Node.js读取form.html当域名localhost:3000/form,但由于某种原因,它总是给我一个错误500页。 fs.readFile的回调函数中的content参数未定义,即使文件的路径正确。 添加了错误消息: {[Error:enoint,打开'C:\form.html']errno:34,代码:'enoint',路径:'C:\form.html'} 我必须指定文件的完整路

  • 问题内容: 我将尝试使用JavaFX 2,并使用一个简单的演示应用程序。该项目包括3个文件,即Main.java,Controller.java和sample.fxml。 在Sample.fxml中,我声明了控制器: 在我的Main.java中,我尝试访问控制器 所以我的第一个想法是映射不起作用。因此,我在控制器中添加了一个initialize方法。 现在的输出是: 在里面 空值 所以我现在的问题

  • 问题内容: 如果将来我使用setMaxAge()设置cookie,那么当我在后续请求中将cookie读回内存时,getMaxAge()会返回-1。我已经通过Chrome的设置和检查器检查了实际的cookie,并且可以验证该过期日期确实设置为将来的60天。 为什么c.getMaxAge()总是返回-1? 问题答案: 浏览器不会发送cookie属性,例如路径和过期。它仅将名称和值发送回去。如果最大期限

  • 为什么我不能在这里回复一个糟糕的请求?在其他例子中,它工作得很好。

  • 问题内容: 这里已经有一些类似的帖子,并且尝试了所有建议的解决方案,但仍然无法正常工作……我无法在控制器内部获取值,它始终为null。下面是代码。我想念什么吗? 客户端javascript MVC控制器 模型 问题答案: 谢谢你们的指导和解决方案。解决方案是您所有建议的组合,因此我决定将其汇总在一篇文章中。 解决问题的方法如下: 应该是(如上面的Ant P建议) json数据应采用(如上面的Ant