#spring-boot #servlets #httpresponse #netflix-zuul
#весенняя загрузка #сервлеты #httpresponse #netflix-zuul
Вопрос:
Я создал один фильтр в службе 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».
Ответ №1:
Попробуйте это:
RequestContext context = RequestContext.getCurrentContext();
List<Pair<String, String>> headers = context.getZuulResponseHeaders();
Чем находить тип содержимого там. Вы должны переопределить метод filterType:
@Override
public String filterType() {
return POST_TYPE;
}
это POST-фильтр, если вы хотите получить ответ, я предполагаю, что вы используете post-фильтр.