2012-04-26 4 views
3

私はシミュレータBB 8900を使用しています。私はurlに接続しようとしており、応答コード302.2を取得していますか?HttpResponse code 302

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

これを確認してください。http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html – Signare

+0

質問をするのを忘れました。これは完全に正常です。応答を処理するかどうかを決定し、そうであれば、リダイレクトに従うか、状況に応じて適切な処理を行います。 (ちなみに、私のペットは、HTTPサーバやクライアントの欠陥を実装し、プロトコルの大部分をスキップしている人です。コードは他の人のものと機能するので、 –

+0

http://httpcats.herokuapp.com/302 – Alex

答えて

7

An HTTP 302 is a 'temporary redirect': はここに私のコードスニペットです。あなたはそれを処理する必要があります。あなたは302応答を取得する場合、標準を1として、応答がリダイレクトと「場所」ヘッダフィールドが含まれます

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で同じメソッドを実行します。

他の二つのポイント:

  1. これはリダイレクト「一時的」であるので、あなたがこの新しいURLを保存することはできません。あなたは古いものを使い続けなければなりません。もしそれが302を返すならば、 'Location'にあるURLを使ってください。

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

+1

re 2)これは実際には安全/非安全に関するもので、特にGET/HEADではありません。 HTTPbisがUI要件を変更したことにも注意してください(http://trac.tools.ietf.org/wg/httpbis/trac/ticket/238を参照) –

+0

ありがとうございます。 @JulianReschke – ArjunShankar

+1

細部までこだわっていました。 – JoVinz