我正在使用模拟器 BB 8900。我正在尝试连接到 url 并获取响应代码 302。这是什么意思?这是我的代码片段:
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
.....
connection = (HttpConnection)Connector.open(url);
responseCode = connection.getResponseCode();
我正在使用模拟器 BB 8900。我正在尝试连接到 url 并获取响应代码 302。这是什么意思?这是我的代码片段:
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
.....
connection = (HttpConnection)Connector.open(url);
responseCode = connection.getResponseCode();
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 上执行相同的方法。
另外两点:
由于这是一个“临时”重定向,因此您无法存储此新 URL。您应该继续使用旧的,如果它返回 302,则使用“位置”中的任何 URL。
如果您没有执行 GET 或 HEAD,则不应自动执行重定向。而是要求用户干预。RFC 要求这样做。