2011-09-13 62 views
2

我在使用Google App Engine構建一些東西,並且正在嘗試創建讀取原始POST數據並執行某些操作的Java Servlet。根據servlet文檔,這應該可以使用getReader()方法或getInputStream()方法。然而,不管怎樣,至少在我的開發框中本地運行的App Engine開發服務器上,getInputStream()在輸入doPost方法之前已經被調用。在Google App Engine中讀取Java Servlet輸入流的問題

我的斷言這方面的證據如下:

  1. getReader引發java.lang.IllegalStateException(見this
  2. 的getInputStream返回一個有效的輸入流,但調用read()對輸入流返回-1(請參見this)。

我查過了,而且在調用getInputStream之前我沒有調用getParameter()。 getInputStream()是我在doPost方法體內調用的第一件事。

這裏有什麼問題?

回答

3

每本link從谷歌應用程序引擎的問題跟蹤:

這是因爲內容類型被作爲 「應用程序/ x-WWW的形式了urlencoded」 發送。在這種情況下,數據流將被讀取爲 並映射爲鍵值對,以便您可以訪問數據爲 req.getParameter(「ParameterName」),出於同樣的原因,流爲 爲空。當 內容類型作爲「application/octet-stream」發送時,我們將能夠訪問req.getinputStream()。

+1

解決了我的問題 - 非常感謝! – eeeeaaii

相關問題