2011-09-13 6 views
2

Google App Engineを使用して何かを構築していますが、生のPOSTデータを読み込んで何か処理するjava Servletを作成しようとしています。サーブレットのドキュメントによれば、これはgetReader()メソッドまたはgetInputStream()メソッドのいずれかを使用して可能でなければなりません。しかし、少なくとも私の開発者ボックスでローカルに動作するApp Engine開発サーバーでは、doPostメソッドが入力される前にgetInputStream()がすでに呼び出されているように見えます。Google App EngineのJavaサーブレット入力ストリームの読み込みに問題があります

次のようにこれを主張するための私の証拠がある:

  1. getReaderはjava.lang.IllegalStateException(thisを参照)
  2. のgetInputStreamは(有効な入力ストリームを返しますが、読みcallingがスローされます)、その入力ストリームに-1を返します(this参照)。

getInputStreamを呼び出す前に、私はチェックして、getParameter()を呼び出していません。 getInputStream()はdoPostメソッドの本体で最初に呼び出すものです。

ここで何が間違っていますか? Googleのアプリエンジンの問題トラッカーから

この link当たり

答えて

3

コンテンツタイプが "アプリケーション/ x-www-form-urlencodedで" として送信されたためです。その場合、ストリームは と読み取られ、 req.getParameter( "ParameterName")というデータにアクセスできるように、また同じ理由でストリームが であるため、キー値のペアとしてマップされます。 content-typeが "application/octet-stream"として送信されると、req.getinputStream()にアクセスできます。

+1

私の問題を修正しました。ありがとうございました! – eeeeaaii

関連する問題