使用Filter获取响应报文

实现原理

普通http请求

  • MyServletResponseWrapper重写HttpServletResponseWrapper的getWriter()返回MyPrintWriter
  • MyPrintWriter重写PrintWriter的所有write 方法。
  • MyPrintWriter定义一个容器接收write方法写入的字符

webservice请求

  • MyServletResponseWrapper重写HttpServletResponseWrapper的getOutputStream()返回MyOutputStream
  • MyOutputStream重写ServletOutputStream的write(int b)方法
  • MyOutputStream定义一个容器接收write方法写入的字节

实现代码

@WebFilter(filterName="myFilter ",urlPatterns="/*")
public class MyFilter implements Filter {
   
@Override 
	public void destroy() {
   
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
   
		HttpServletRequest req = (HttpServletRequest)arg0;
		HttpServletResponse resp = (HttpServletResponse)arg1;
		MyServletResponseWrapper myresp = new MyServletResponseWrapper(resp);
		arg2.doFilter(arg0, arg1);
		System.out.println(myresp.getContent());
	}
	
	@Override
	public void init(FilterConfig arg0) throws ServletException {
   
	}
}

public class MyServletResponseWrapper extends HttpServletResponseWrapper implements ResponseContent{
   
	private MyPrintWriter myPrintWriter
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用CSDN提供的拦截器来拦截响应。拦截器是一种在请求发送到服务器并接收到响应后执行一些操作的机制。在拦截器中,您可以检查响应的内容并根据需要进行过滤。 以下是一个示例代码,展示了如何使用CSDN的拦截器来拦截响应: ```python import requests # 创建一个Session对象 session = requests.Session() # 定义一个拦截器 class ResponseInterceptor(requests.adapters.HTTPAdapter): def build_response(self, req, resp): # 这里可以对响应进行过滤操作 if 'filter_word' in resp.content: # 如果响应中包含指定的关键字,可以进行自定义操作,比如抛出异常或返回特定的响应内容 raise Exception('Filtered response') return resp # 将拦截器添加到Session对象中 session.mount('http://', ResponseInterceptor()) session.mount('https://', ResponseInterceptor()) # 发送请求 response = session.get('https://www.example.com') # 对响应进行处理 print(response.text) ``` 在上面的代码中,我们创建了一个名为`ResponseInterceptor`的拦截器类,并重写了`build_response`方法。在这个方法中,您可以根据需要对响应进行过滤操作。如果响应中包含特定的关键字(在示例中为`filter_word`),您可以执行自定义操作,比如抛出异常或返回特定的响应内容。 然后,我们将拦截器添加到Session对象中,以便在发送请求时应用该拦截器。最后,我们发送一个GET请求,并对响应进行处理。 请注意,这只是一个示例代码,您需要根据您的实际需求进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值