CXF拦截器输出报文,如果太大的话就不会显示出来,一片空白。
写法就是在网上搜到的,基本都是这么写的。
OutputStream os = message.getContent(OutputStream.class);
CachedStream cs = new CachedStream();
message.setContent(OutputStream.class, cs);
message.getInterceptorChain().doIntercept(message);
CachedOutputStream csnew = (CachedOutputStream) message.getContent(OutputStream.class);
InputStream in = csnew.getInputStream();
String xml = IOUtils.toString(in);
System.out.println("拦截器得到输出报文:" + xml);
一开始用着没问题,但是发现返回的报文如果太大,拦截器打印的输出报文就是空的。
如果过滤一下where条件让返回的报文变少点,发现拦截器打印的输出报文又出来了。
哪位大神知道cxf拦截器输出报文是不是有什么长度范围限制之类的- -
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
楼主我也遇到这个问题了,换成字节数组流还是不行,请问你是怎么处理的啊,急……
这个我已将解决了。CachedStream cs = new CachedStream(); 有问题 换成字节数组流 完美
问下,楼主,这个问题你解决没有呢?我遇到同样的问题了,有解决方案吗?
回复
那代码是对的,可以拦截下来报文,但是我这边需要做修改再写入流中去,就这一段一直没折腾出来。唉
回复
newOut.close(); out.flush();写错了吧
回复
这个去掉了,也没效果。这一小段代码愣是不知该如何写才有效果。悲桑~
回复
先拿到返回报文,然后修改一下命名空间前缀,在写入到流中输出出去即可。(⊙o⊙)
回复
OutputStream out = message.getContent(OutputStream.class); message.setContent(OutputStream.class, newOut); 注意看这几行代码
回复
出去的怎么会是返回的报文?
回复
嗯,我做的接口,返回数据给别人的。自己在soapui调试看看返回的报文是不是符合规范的。因为不符合,所以要简单修改下呢。
回复
写文件