2012-04-26 96 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