2016-11-07 2 views
0

Ich benutze Filter, um jede Anfrage abzufangen, wo im Filter kann ich nur ServletRequest inputstream erhalten, die leeren Eingangsstrom zurückgibt, um den Eingangsstrom zu bekommen. Es scheint, dass ich das bekommen muss HttpServletRequest. Wie erreicht man das? Ich versuchte Casting sowie Umwandlung in httpservletrequest. keiner der Wege, ich war in der Lage Wert zu erhalten miterhalten httpservletrequest innerhalb dofilter Methode des Filters

request.getParameter("aaa") //when request content type is multipart/file. 

Antwort

1

getInputStream() ein Teil ServletRequest Schnittstelle ist, also auch wenn Sie ServletRequest-HttpServletRequest werfen (die von ServletRequest erstreckt) das Ergebnis wird das gleiche sein.

Vielleicht hilft Ihnen diese answer herauszufinden, warum inputstream leer ist.

1

Wenn der Eingabestream leer ist, gab es keinen Anfragetext. Die zu bekommen wird das nicht ändern: Sie haben es bereits.

+0

Input nicht leer .. content eine Datei ist, die Formulardaten zur Verfügung stehen .. –

+0

Wenn der Eingangsstrom ist leer, aber die Parameter nicht, sind die Parameter über verfügbar, err, ' request.getParameter() 'und der Eingabestrom ist, err, leer. – EJP

0

Ich war erfolgreich in der Lage, den "servletRequest" in "HttpServletRequest" innerhalb meiner benutzerdefinierten Filterklasse zu schreiben. Unterhalb der Schnipsel ist,

public class SAMLFilter implements Filter { 


    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 

    } 

    @Override 
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 

     HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest; 

     if(servletRequest instanceof HttpServletRequest) { 
      httpServletRequest = (HttpServletRequest)servletRequest; 
      System.out.println("getInputStream = " + httpServletRequest.getInputStream()); 

     } else { 
      System.out.println("NOT CAST"); 
     } 


    @Override 
    public void destroy() { 

    } 
} 
Verwandte Themen