如何在Zuul过滤器中识别响应内容类型?

问题描述 投票:1回答:1

我在zuul服务中创建了一个过滤器。

我能够获得响应状态,但我无法获得响应内容类型。

码:

public class UserEventFilter extends ZuulFilter {

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        HttpServletResponse response = ctx.getResponse();
        System.out.println("response status:" + response.getStatus());
        System.out.println("response status:" + ctx.getResponseStatusCode());
        System.out.println("response content type:" + response.getContentType());

        try (final InputStream responseDataStream = ctx.getResponseDataStream()) {
            final String responseData = CharStreams
                    .toString(new InputStreamReader(responseDataStream, Constants.ENCODING_UTF_8));
            ctx.setResponseBody(responseData);
            System.out.println("responseData:"+responseData);
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }   

}

响应内容类型为null。

我想要做的是,我必须得到所有响应的响应主体,除非它是“application / octet-stream”。

spring-boot servlets httpresponse netflix-zuul
1个回答
0
投票

试试这个:

RequestContext context = RequestContext.getCurrentContext();
List<Pair<String, String>> headers = context.getZuulResponseHeaders();

比那里找到内容类型。您应该覆盖filterType方法:

@Override
public String filterType() {
   return POST_TYPE;
}

这是POST过滤器,如果你想要响应我猜你正在使用后置过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.