Java.lang.illegalstateException: getReader () уже был вызван для этого запросаJAVA

Программисты JAVA общаются здесь
Anonymous
Java.lang.illegalstateException: getReader () уже был вызван для этого запроса

Сообщение Anonymous »

Я хочу добавить регистрацию в свой сервлет, поэтому я создал фильтр, который должен отображать запрос и перейти в сервлет. Но, к сожалению, я включил исключение: < /p>

java.lang.IllegalStateException: getReader() has already been called for this request
at org.apache.catalina.connector.Request.getInputStream(Request.java:948)
at org.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:338)
at com.noelios.restlet.ext.servlet.ServletCall.getRequestEntityStream(ServletCall.java:190)
< /code>

Итак, чтобы решить эту проблему, я нашел решение с оберткой, но это не работает. Что еще я могу использовать/изменить код? Есть идеи?public class MyHttpServletRequestWrapper extends HttpServletRequestWrapper
{
public MyHttpServletRequestWrapper(HttpServletRequest request)
{
super(request);
}

private String getBodyAsString()
{
StringBuffer buff = new StringBuffer();
buff.append(" BODY_DATA START [ ");
char[] charArr = new char[getContentLength()];
try
{
BufferedReader reader = new BufferedReader(getReader());
reader.read(charArr, 0, charArr.length);
reader.close();
}
catch (IOException e)
{
e.printStackTrace();
}
buff.append(charArr);
buff.append(" ] BODY_DATA END ");
return buff.toString();
}

public String toString()
{
return getBodyAsString();
}
}
< /code>

[myfilter] < /p>

public class MyFilterimplements Filter
{
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
final HttpServletResponse httpServletResponse = (HttpServletResponse) response;

final HttpServletRequestWrapper requestWrapper = new MyHttpServletRequestWrapper(httpServletRequest);
final String requestBody = requestWrapper.toString();

chain.doFilter(request, response);
}
}


Подробнее здесь: https://stackoverflow.com/questions/731 ... or-this-re

Вернуться в «JAVA»