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 上执行相同的方法。

另外两点:

  1. 由于这是一个“临时”重定向,因此您无法存储此新 URL。您应该继续使用旧的,如果它返回 302,则使用“位置”中的任何 URL。

  2. 如果您没有执行 GET 或 HEAD,则不应自动执行重定向。而是要求用户干预。RFC 要求这样做

于 2012-04-26T08:46:49.233 回答