
您不应该
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但是在可以公开给客户代码之前已被关闭。)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)