6

シミュレータ BB 8900 を使用しています。URL に接続しようとして、応答コード 302 を取得しようとしています。これはどういう意味ですか? ここに私のコードスニペットがあります:

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
.....
connection = (HttpConnection)Connector.open(url);
responseCode = connection.getResponseCode();
4

1 に答える 1

14

HTTP 302 は「一時的なリダイレクト」です。あなたはそれを処理する必要があります。

標準に従って、302 応答を受け取った場合、応答にはリダイレクト付きの「Location」ヘッダー フィールドが含まれます。

Client request:
GET /index.html HTTP/1.1
Host: www.example.com

Server response:
HTTP/1.1 302 Found
Location: http://www.redirected-address.example.com/

応答から新しい URL を抽出する必要があります。(getHeaderField("Location")これを行うために使用します)。次に、取得した新しい URL で同じメソッドを実行します。

その他の 2 つのポイント:

  1. これは「一時的な」リダイレクトであるため、この新しい URL を保存することはできません。古いものを使用し続ける必要があります。302 が返された場合は、「場所」にある URL を使用してください。

  2. GET または HEAD を実行していない場合は、リダイレクトを自動的に行うべきではありません。代わりに、ユーザーの介入を求めてください。RFC ではこれが必要です。

于 2012-04-26T08:46:49.233 に答える