如何读取 HttpServletReponses 输出流? [英] How can I read an HttpServletReponses output stream?

查看:66
本文介绍了如何读取 HttpServletReponses 输出流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想制作一个 Servlet 过滤器,它会在处理和完成后读取响应的内容,并以 XML 或 PDF 或其他格式返回该信息.但我不确定如何从 HttpServletResponse 对象中获取任何信息.我如何获得这些信息?

I want to make a Servlet filter that will read the contents of the Response after it's been processed and completed and return that information in XML or PDF or whatever. But I'm not sure how to get any information out of the HttpServletResponse object. How can I get at this information?

推荐答案

将此添加到过滤器 java 文件中.

Add this to the filter java file.

static class MyHttpServletResponseWrapper 
  extends HttpServletResponseWrapper {

  private StringWriter sw = new StringWriter(BUFFER_SIZE);

  public MyHttpServletResponseWrapper(HttpServletResponse response) {
    super(response);
  }

  public PrintWriter getWriter() throws IOException {
    return new PrintWriter(sw);
  }

  public ServletOutputStream getOutputStream() throws IOException {
    throw new UnsupportedOperationException();
  }

  public String toString() {
    return sw.toString();
  }
}

使用以下代码:

HttpServletResponse httpResponse = (HttpServletResponse) response;
MyHttpServletResponseWrapper wrapper = 
  new MyHttpServletResponseWrapper(httpResponse);

chain.doFilter(request, wrapper);

String content = wrapper.toString();

内容变量现在具有输出流.您也可以对二进制内容执行此操作.

The content variable now has the output stream. You can also do it for binary content.

这篇关于如何读取 HttpServletReponses 输出流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆