Чтобы добавить пользовательский заголовок, я использовал HttpServletRequestWrapper, заголовок которого я не получаю в @RequestHeader HttpHeader httpHeader, но в запросе его есть - PullRequest
0 голосов
/ 01 ноября 2019

Я не получаю свой настраиваемый заголовок, который я установил с помощью оболочки для запроса внутри HttpHeader в контроллере.

RequestWrapper: -

открытый класс RequestWrapper extends HttpServletRequestWrapper {

private final Map<String, String> customHeaders;

public RequestWrapper(HttpServletRequest request)
{
    super(request);
    this.customHeaders = new HashMap<String, String>();
}

public void setHeader(String name, String value)
{
    this.customHeaders.put(name, value);
}

@Override
public String getHeader(String name)
{

    return !StringUtils.isEmpty(customHeaders.get(name)) ? customHeaders.get(name)
            : ((HttpServletRequest) getRequest()).getHeader(name);
}

@Override
public Enumeration<String> getHeaderNames()
{
    Set<String> set = new HashSet<String>(customHeaders.keySet());
    Enumeration<String> e = ((HttpServletRequest) getRequest()).getHeaderNames();
    while (e.hasMoreElements())
    {
        set.add(e.nextElement());
    }
    return Collections.enumeration(set);
}

}

открытый класс RequestFilter расширяет OncePerRequestFilter {

@ Override

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException
{

        RequestWrapper req = new RequestWrapper(request);
        req.setHeader("Uuid", UUID.randomUUID().toString());
        filterChain.doFilter(req, response);
    }
}

}

Я не получаю Uuid или пользовательский заголовок здесь, в HttpHeader, почему?

@PostMapping(value = "/v0.2/Student/add")
public ResponseEntity<ResponseBody<PlatformCardResponse>> addStudent(HttpServletRequest request,
        @RequestHeader HttpHeaders httpHeaders,
        @RequestBody Student s)
{

Как я могу заставить его работать, чтобы получить заголовок внутри HttpHeader. или любой другой подход, мы должны изменить заголовок запроса в httpServletRequest ????

...