Я внедряю фильтры в шлюз API zuul. в предварительном фильтре я попытался выполнить процесс аутентификации, указав некоторые заголовки в запросе. Однако, когда я использую метод getHeader для заголовка, который не существует, он дал мне исключение nullpointer. Основываясь на документации, он должен дать мне нулевое значение.
в соответствии с этим сайтом, метод getHeader возвращает либо ноль, либо строку: https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getHeader(java.lang.String)
Но если это так, он не должен давать мне исключение нулевой точки, не так ли?
Я тоже пытался это сделать
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String authHeader = request.getHeader("Authorisation");
System.out.println("below is header");
System.out.println(authHeader);
Но println дал мне исключение нулевого указателя
public class PreFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
if(request.getHeader("Authorisation").equals("yes")){
System.out.println("Authorisation is yes");
}else if((request.getHeader("Authorisation"))==null || (request.getHeader("Authorisation")).equals("")){
System.out.println("Authorisation is nullorempty");
}
else{
System.out.println("Authorisation is no");
}
System.out.println("Request Method : " + request.getMethod() + " Request URL : " + request.getRequestURL().toString());
return null;
}
}