2012-04-26 106 views
3

我正在使用模擬器BB 8900.我試圖連接到url並獲得響應代碼302.這是什麼意思? 這裏是我的代碼片段:HttpResponse代碼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 2012-04-26 08:35:27

+0

你忘了問一個問題。順便說一句,這很正常。決定是否要處理響應,如果是,請遵循重定向或根據您的情況採取適當的措施。 (順便說一下,我的一個寵物小偷是那些實施有缺陷的HTTP服務器或客戶端並且跳過大部分協議的人。其他人總是因爲他們的代碼「與其他人的東西合作」而被指責爲他們的遺漏。) – 2012-04-26 08:35:30

+0

http://httpcats.herokuapp.com/302 – Alex 2012-04-26 08:37:32

回答

7

An HTTP 302 is a 'temporary redirect'。你需要處理它。

按照標準,如果你得到一個302響應,響應將包含一個「位置」頭域重定向:

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,則使用任何URL在'位置'。

  2. 如果您未執行GET或HEAD,則不應該自動執行重定向。而是要求用戶干預。 The RFC requires this

+1

重新2)這確實是關於安全/不安全,特別是GET/HEAD。另請注意,HTTPbis更改了UI要求(請參閱http://trac.tools.ietf.org/wg/httpbis/trac/ticket/238) – 2012-04-26 10:04:20

+0

謝謝。這是很好的關注細節@JulianReschke – ArjunShankar 2012-04-26 10:32:00

+1

工作很好..謝謝你.. – JoVinz 2012-04-27 05:14:47