使用RestTemplate获取InputStream

使用RestTemplate获取InputStream,第1张

使用RestTemplate获取InputStream

您不应该

InputStream
直接获得。
RestTemplate
旨在封装处理响应(和请求)内容。它的优势在于处理所有IO,并为您提供现成的Java对象

的一位

RestTemplate
原始作者Brian Clozel 表示:

RestTemplate
并不意味着流响应主体;它的合同不允许这样做,而且已经存在了很长时间,以至于在不中断许多应用程序的情况下就无法更改其行为的这一基本部分。

您需要注册适当的

HttpMessageConverter
对象。这些对象将可以
InputStream
通过
HttpInputMessage
对象访问响应的。

作为Abdull表明,Spring并配备了

HttpMessageConverter
用于实现
Resource
其自身的包装
InputStream
ResourceHttpMessageConverter
。它不支持所有
Resource
类型,但是由于无论如何都应该对接口进行编程,因此应该只使用superinterface
Resource

当前的实现(4.3.5)将返回

ByteArrayResource
,并将响应流的内容复制到
ByteArrayInputStream
可以访问的新内容。

您不必关闭流。在

RestTemplate
你需要照顾那个。(这很不幸,如果您尝试使用
InputStreamResource
,则支持的另一种类型
ResourceHttpMessageConverter
,因为它包装了底层的响应,
InputStream
但是在可以公开给客户代码之前已被关闭。)



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5488693.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存