在Google App Engine中阅读Java Servlet输入流的问题

时间:2011-09-13 16:46:06

标签: java google-app-engine servlets

我正在使用Google App Engine构建一些东西,我正在尝试创建一个java Servlet来读取原始POST数据并使用它做一些事情。根据servlet文档,这应该可以使用getReader()方法或getInputStream()方法。然而,似乎不知何故,至少在我的开发盒上本地运行的App Engine开发服务器上,在输入doPost方法之前已经调用了getInputStream()。

我断言这一点的证据如下:

  1. getReader抛出java.lang.IllegalStateException(参见this
  2. getInputStream返回一个有效的输入流,但在该输入流上调用read()会返回-1(参见this)。
  3. 我在调用getInputStream之前检查过,我没有调用getParameter()。 getInputStream()是我在doPost方法体中调用的第一个东西。

    这里有什么问题?

1 个答案:

答案 0 :(得分:3)

来自Google应用引擎问题跟踪器的link

  

这是因为内容类型是作为发送的   “应用程序/ x WWW的形式进行了urlencoded”。在这种情况下,将读取流   并映射为键值对,以便您可以访问数据   req.getParameter(“ParameterName”)和原因相同的是   空。我们将能够在访问时访问req.getinputStream()   content-type作为“application / octet-stream”发送。