getWriter() has already been called for this response错误

h284872260 2021-02-04 09:56:26

问题描述:这个接口代码是springboot使用feign调用其他微服务pdf流文件,然后在浏览器预览pdf的一个接口,在IDE调试不加图上的res.reset()是可以的。但是打包部署到测试linux上,此接口打印错误日志出现getWriter() has already been called for this response的错误,在方法第一句加上res.reset()则解决。但是我的response对象并没有使用getwriter这个方法啊。
请问坛里大拿根本原因是哪里的问题啊。
...全文
983 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
魅Lemon 2023-04-14
  • 打赏
  • 举报
回复

好兄弟我也是这样,本地没问题,服务器就这样,你之后找到原因了吗

h284872260 2021-02-05
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
你自己没有调getWriter方法,但你不能保证框架在其他地方没有调啊,也就是框架调用outPDF时传给你的res是怎样的,你保证不了。所以不能光看自己的代码,要考虑整个框架的模块之间是怎么调用的,也就是传入的参数在传入前是什么状态,也要弄清楚。
这个res是直接请求的时候,框架创建的对象。难道框架会对对象进行一些默认调用?
h284872260 2021-02-04
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
你自己没有调getWriter方法,但你不能保证框架在其他地方没有调啊,也就是框架调用outPDF时传给你的res是怎样的,你保证不了。所以不能光看自己的代码,要考虑整个框架的模块之间是怎么调用的,也就是传入的参数在传入前是什么状态,也要弄清楚。
谢谢回复,有道理,我也想的是这点。你的意思是,框架的httpservletResponse 返回给我的这个res对象,是否在方法之前已经调用过writer方法吧。这个我也看代码了,确实是没找到。 这句res.reset()是第一句。我理解的这个response对象传过来之前调过writer,但是有个问题。 我这个代码,不加res.reset()在本地是可以顺利调的,但是放在linux上,就不行了。必须加上这句。 另外同样代码,放在同事的另一个服务上,不加res.reset这句,部署在linux上,还是可以跑通。很纠结。。。
qybao 2021-02-04
  • 打赏
  • 举报
回复
你自己没有调getWriter方法,但你不能保证框架在其他地方没有调啊,也就是框架调用outPDF时传给你的res是怎样的,你保证不了。所以不能光看自己的代码,要考虑整个框架的模块之间是怎么调用的,也就是传入的参数在传入前是什么状态,也要弄清楚。
Roman_The_Road 2022-02-14
  • 举报
回复
@qybao 在本地调试,没问题,上了服务器就报错,你说框架调用,那么本地调试框架就不调用了么

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧