我在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”。
答案 0 :(得分:0)
尝试一下:
RequestContext context = RequestContext.getCurrentContext();
List<Pair<String, String>> headers = context.getZuulResponseHeaders();
比在那里找到内容类型。您应该重写filterType方法:
@Override
public String filterType() {
return POST_TYPE;
}
这是POST过滤器,如果您需要响应,我想您正在使用后过滤器。