我有一个Spring MVC方法,返回一个ResponseEntity
。根据检索到的特定数据, 有时
需要将数据流返回给用户。其他时候,它将返回除流之外的其他内容,有时还会返回重定向。我绝对希望它是一个流而不是字节数组,因为它可能很大。
当前,我使用以下代码片段返回流:
HttpHeaders httpHeaders = createHttpHeaders();
IOUtils.copy(inputStream, httpServletResponse.getOutputStream());
return new ResponseEntity(httpHeaders, HttpStatus.OK);
不幸的是,这不允许Spring
HttpHeaders
数据实际填充响应中的HTTP标头。这是有道理的,因为我的代码OutputStream
在Spring接收之前写入了ResponseEntity
。
某种程度上让Spring ResponseEntity
用InputStream
let处理它会很好。它还将与我的函数的其他路径平行,使我可以成功返回a
ResponseEntity
。无论如何,我可以用Spring完成吗?
另外,我确实尝试将InputStream
in 返回,ResponseEntity
只是看看Spring是否会接受它。
return new ResponseEntity(inputStream, httpHeaders, HttpStatus.OK);
但是它抛出了这个异常:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
我可以通过HttpServletResponse
直接设置所有功能来使我的函数正常工作,但是我只想用Spring来做到这一点。
Spring的InputStreamResource效果很好。您需要手动设置Content-
Length,否则Spring会尝试读取流以获取Content-Length。
InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
httpHeaders.setContentLength(contentLengthOfStream);
return new ResponseEntity(inputStreamResource, httpHeaders, HttpStatus.OK);
我从未找到任何建议使用此类的网页。我只是猜对了,因为我注意到使用ByteArrayResource有一些建议。
我有一个Spring MVC方法,它返回。根据检索的特定数据,它有时需要向用户返回数据流。其他时候,它将返回流以外的东西,有时是重定向。我非常希望这是一个流,而不是字节数组,因为它可以很大。 目前,我使用以下代码片段返回流: 不幸的是,这不允许Spring数据实际填充响应中的HTTP头。这是有意义的,因为我的代码在Spring接收之前就写入了。 但它会引发此异常: 我可以通过直接设置上的所有内容来
我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?
这是我的控制器: 在上面的If-Guard中,我想要实现的是,如果vehicle对象没有LicensePlate成员,则发回相应的HTTP状态头冲突或其他东西。 我来自一个节点和Express后台,我被用来设置我的头,发送响应和完成它。然而,在这种情况下(JPA)它似乎不起作用。有什么想法吗?
问题内容: 在控制器中,我创建json数组。如果我还可以的话: 但我需要返回JSON数组和HTTP状态代码: Eclipse在XXX行中看到错误: 如何返回json + http回复?我的工作代码用于返回一个json对象+ http状态代码: 问题答案: 现在我回来了。我不知道更好的解决方案,但是可以。
问题内容: 我在SpringMVC项目中将新的Java API(JSR 353)用于JSON。 这个想法是生成一些Json数据并将其返回给客户端。我所拥有的控制器看起来像这样: 当我访问它时,我没有得到JSON的预期表示,而是得到了这些: 为什么是这样?到底是怎么回事?以及如何使其正确返回预期的JSON? 问题答案: 当您意识到新的JSR 353 API 没有特殊要求时,答案很简单。相反,在这种情