Java IllegalStateException:已为此请求调用getInputStream()

Java IllegalStateException:已为此请求调用getInputStream(),java,rest,servlets,jersey,Java,Rest,Servlets,Jersey,当我试图从HttpServletResponse获取缓冲读取器,告诉我已经调用了getInputStream时,获取非法状态异常。 但是getReader是第一行代码,我根本不调用getInputStream 服务器: @POST @Path("/getReport") @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.APPLICATION_JSON) public void getReport(@Context HttpServletReq

当我试图从HttpServletResponse获取缓冲读取器,告诉我已经调用了getInputStream时,获取非法状态异常。 但是getReader是第一行代码,我根本不调用getInputStream

服务器:

@POST
@Path("/getReport")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
public void getReport(@Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse, @Context UriInfo uriInfo )
            throws ServletException, IOException{

JSONObject jobj =  new JSONObject(new JSONTokener(servletRequest.getReader()));

写入
servletRequest.getReader()
servletRequest.getInputStream()
都是非法的。我认为
servletRequest.getInputStream()
之前也被调用过,这导致了
IllegalStateException

看起来restlet框架在请求对象上调用了getRequestEntityStream(),而请求对象又调用了getInputStream(),因此在请求上调用getReader()会引发IllegalStateException

getReader()和getInputStream()的Servlet API文档说明:

从文档中可以看出,我似乎无法对请求对象同时调用getReader()和getInputStream()(即使不是我在做这件事)


我不得不使用getInputStream()而不是getReader()。

ummm如何调用它?我没有调用getInputStream(),getReader()是我的第一行。你能检查一下你的任何过滤器正在调用吗。如果要调试,请实现RequestWrapper并在getInputStream()中添加调试。
 public java.io.BufferedReader getReader()
    ...
    ...
Throws:
    java.lang.IllegalStateException - if getInputStream() method has been called on this request

 public ServletInputStream getInputStream()
    ...
    ...
    Throws:
    java.lang.IllegalStateException - if the getReader() method has already been called for this request