gpt4 book ai didi

java - 带有 ResponseEntity 的 HttpStatus 和 pdf

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:56 25 4
gpt4 key购买 nike

我有一个 spring mvc Controller ,它生成一个“application/pdf”来下载生成的 pdf。我想始终返回 pdf,并根据某些条件返回不同的 HTTP 代码。

我尝试返回 ResponseEntity<> 对象,但 PDF 的响应始终为 200(始终生成 pdf,但我需要不同的状态响应)。

@RequestMapping(value = "/obtain/downloadPDF", method = RequestMethod.GET, produces = "application/pdf")
@ResponseBody
public ResponseEntity<?> getPdfFile(HttpServletResponse response,HttpServletRequest request) throws IOException{

response.setHeader("Content-disposition", "inline; filename=\"" +"file.pdf" +"\"");
String error = getPDF(response, request);
logger.debug("PDF error : " + StringUtils.defaultIfEmpty(error,"null") );
return new ResponseEntity<>("",HttpStatus.INTERNAL_SERVER_ERROR);
}

注意:getPDF方法内部,只是生成pdf并将其写入response.getOutputStream()的代码

背后的想法是我想始终返回输出流中的 pdf,但返回不同的结果代码(200、500 等)。当我返回 500 时发生事件,我想返回 PDF。可能吗?

任何帮助将不胜感激。

最佳答案

我对此不是 100% 确定,但我认为该方法返回的是 HttpServletResponse 中的任何内容,而不是您返回的对象。

我认为您应该尝试使用 HttpServletResponse.getWriter().write(responseEntity.getBody())HttpServletResponse.setHttpStatus(responseEntity.getHttpStatus()),或者只是等效的硬编码值...

此外,您是否同时看到错误和 200 状态?如果是这样,请尝试将实体参数化为字符串 - 无论您放入其中的任何 Throwable 都应该可以正常工作。

如果您尝试这样做但不起作用,请告诉我,以便我可以编辑或删除此答案 - 我实际上尚未尝试过此操作,但有兴趣找出该代码不起作用的原因。

关于java - 带有 ResponseEntity 的 HttpStatus 和 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com