【问题标题】:Create HttpServletResponse object in Zuul custom filter在 Zuul 自定义过滤器中创建 HttpServletResponse 对象
【发布时间】:2019-10-22 22:26:26
【问题描述】:

我有一个 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 对象?

【问题讨论】:

    标签: spring-boot netflix-zuul


    【解决方案1】:

    试试这样的:

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

    【讨论】:

    • 这会正确设置Content-Length吗?
    猜你喜欢
    • 2015-09-12
    • 2015-04-12
    • 1970-01-01
    • 2023-03-04
    • 2017-06-05
    • 2016-06-29
    • 2018-08-06
    • 2019-04-04
    • 2016-05-27
    相关资源
    最近更新 更多