在Zuul自定义过滤器中创建HttpServletResponse对象

时间:2019-06-07 11:57:59

标签: spring-boot netflix-zuul

我有一个PRE_TYPE类型的Zuul自定义过滤器。 当我收到请求时,我想阻止其路由,而是发送响应(在这种情况下为SOAP消息),因为我正在模拟Web服务响应。 我的自定义过滤器:

  @Component
public class CustomFilter extends ZuulFilter {
    private ThreadLocal<byte[]> buffers;

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = getCurrentContext();
        ctx.unset();
        String s= "<soap:Envelope xmlns:......</soap:Envelope>";


 }

    @Override
    public String filterType() {
        return FilterConstants.PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 0;
        }
}

我需要创建一个HttpServletResponse并用响应填充并将其写入输出流,以便客户端接收该响应。 如何创建servletresponse对象?

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

@Override
public Object run() {
    RequestContext ctx = RequestContext.getCurrentContext();
    ctx.setSendZuulResponse(false);
    ctx.setResponseBody("<soap:Envelope xmlns:......</soap:Envelope>");
    ctx.setResponseStatusCode(...);
    return null;
}