Как определить тип содержимого ответа в фильтре Zuul? - PullRequest
1 голос
/ 26 марта 2019

Я создал один фильтр в сервисе 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».

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте:

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

Чем там найти тип контента.Вы должны переопределить метод filterType:

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

, то есть POST-фильтр, если вы хотите получить ответ, я думаю, вы используете пост-фильтр.

...