Создайте объект HttpServletResponse в пользовательском фильтре Zuul - PullRequest
2 голосов
/ 07 июня 2019

У меня есть собственный фильтр Zuul типа PRE_TYPE.Когда я получаю запрос, я хочу предотвратить его маршрутизацию и вместо этого отправить ответ, в данном случае сообщение SOAP, так как я имитирую ответ веб-службы.Мой пользовательский фильтр:

  @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 Ответ

2 голосов
/ 11 июня 2019

Попробуйте что-то вроде этого:

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