gpt4 book ai didi

java - 非法状态异常 : getInputStream() has already been called for this request

转载 作者:行者123 更新时间:2023-12-01 14:24:28 24 4
gpt4 key购买 nike

当我尝试从 HttpServletResponse 获取 Buffered Reader 时出现非法状态异常,告诉我 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()));

最佳答案

看起来reSTLet框架已经在请求对象上调用了getRequestEntityStream(),而后者又调用了getInputStream(),所以在请求上调用getReader()会抛出IllegalStateException。

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

 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

从文档看来,我无法在 Request 对象上同时调用 getReader() 和 getInputStream() (即使不是我在做这件事)。

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

关于java - 非法状态异常 : getInputStream() has already been called for this request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com