【问题标题】:How to identify response contenttype in Zuul filter?如何识别 Zuul 过滤器中的响应内容类型?
【发布时间】:2019-03-26 17:33:35
【问题描述】:

我在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();
        }
    }   

}

响应内容类型为空。

我想要做的是,我必须获取所有响应的响应正文,除非它是“application/octet-stream”。

【问题讨论】:

    标签: spring-boot servlets httpresponse netflix-zuul


    【解决方案1】:

    试试这个:

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

    比在那里找到内容类型。你应该重写 filterType 方法:

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 2017-06-17
      相关资源
      最近更新 更多