private String getStringFromStream(HttpServletRequest req) {
HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper (req);
ServletInputStream is;
try {
is = hsrw.getInputStream();
int nRead = 1;
int nTotalRead = 0;
byte[] bytes = new byte[10240];
while (nRead > 0) {
nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);//这里报错了 不知道怎么回事?
if (nRead > 0)
nTotalRead = nTotalRead + nRead;
}
String str = new String(bytes, 0, nTotalRead, "utf-8");
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
org.apache.catalina.connector.ClientAbortException: java.io.EOFException
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:322)
at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:340)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132)
at com.chenli.main.security.oauth2.token.TokenLoginFilter.getStringFromStream(TokenLoginFilter.java:69)
at com.chenli.main.security.oauth2.token.TokenLoginFilter.attemptAuthentication(TokenLoginFilter.java:40)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:222)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
HttpServletRequest获取参数(重要)
1 HttpServletRequest获取参数方法
可以使用HttpServletRequest获取客户端的请求参数,相关方法如下:
String getParameter(String name):通过指定名称获取参数值;
String[] getParameterValues(String name):通过指定名称获取参数值数组,有可能一个名字对应多个值,例如表单中的多个复选框使用相同的name时;
Enumeration getParameterNames():获取所有参数的名字;
Map getParameterMap():获取所有参数对应的Map,其中key为参数名,value为参数值。