0

AppEngine TaskQueue サービスから呼び出される HTTP POST 本文のエンコーディングは何ですか?

経由でタスクを作成した場合TaskOptions#payload(byte[], String)、HTTP リクエスト本文のエンコーディングはどうなりますか?

同様に、String作成された viaTaskOptions#param(String, byte[])と取得された via のエンコーディングはどうなりますServletRequest#getParameter(String)か?

更新:使用する必要がある文字セット名は何ですか

req.getParameter("myParam").getBytes(charset)

経由で送信したバイナリ データを取得するにはTaskOptions#param(String, byte[])?

http://www.w3.org/TR/html4/interact/forms.htmlの「application/x-www-form-urlencoded」の定義で定義されていないサーブレットコンテナ固有のデフォルト値のようです#h-17.13.4.1 -- すべてがサーブレット API ですでに抽象化されているためです。

4

2 に答える 2

2

TaskOptions#payload(byte[], String) 経由でタスクを作成した場合、HTTP リクエスト本文のエンコーディングはどうなりますか?

エンコーディングはありません。渡すバイト配列は、HTTP リクエストのリテラル ボディになります。

同様に、TaskOptions#param(String, byte[]) で作成され、ServletRequest#getParameter(String) で取得される文字列のエンコーディングはどうなりますか?

パラメーターは、通常の GET または POST 要求と同様に、formencoding を使用してエンコードされます。

于 2011-03-10T17:38:29.860 に答える
1

最初のものでは、私にはわかりません。UTF-8ただし、Javadoc がUTF-8どこにでも言及しているので、私は賭けをします。Fiddler2 などの HTTP デバッガー ツールを使用して、要求本文をデバッグできます。UTF-8 固有の文字を含む文字列をテストして、バイト配列に変換しstring.getBytes("UTF-8")、サーブレット側で読み取ることができます。同じ文字が返される場合は、UTF-8 を使用している可能性が非常に高くなります。

2 つ目は、リクエスト ヘッダーのcharset属性に依存します。Content-Typeただし、これはほとんどの場合存在しません (少なくとも、通常の Web ブラウザーを使用している場合)。ただし、リクエスト本文からデータにアクセスする前に、自分で設定することができます。ServletRequest#setCharacterEncoding()

if (request.getCharacterEncoding() == null) {
    request.setCharacterEncoding("UTF-8");
}

それ以外の場合は、 で指定されているように、プラットフォームのデフォルトが使用されますCharset#defaultCharset()

于 2011-03-10T02:03:47.307 に答える