【问题标题】:HttpResponse code 302HttpResponse 代码 302
【发布时间】:2012-04-26 08:30:34
【问题描述】:

我正在使用模拟器 BB 8900。我正在尝试连接到 url 并获取响应代码 302。这是什么意思? 这是我的代码 sn-p:

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

【问题讨论】:

  • 你忘了问问题。顺便说一句,这是完全正常的。决定是否要处理响应,如果是,请遵循重定向或执行适合您情况的任何操作。 (顺便说一句,我最讨厌的一个问题是那些实现有缺陷的 HTTP 服务器或客户端并跳过大部分协议的人。其他人总是因为他们的疏忽而受到指责,因为他们的代码“与其他人的东西一起工作”。)
  • 请求的数据实际上位于不同的 URL 下,但是重定向有时可能会改变(当链接到这些类型的文档时,浏览器应该默认使用重定向文档的 Udi,但可以选择链接到最终文档),如“转发”。响应格式与 Moved 相同。

标签: java http blackberry http-status-code-302


【解决方案1】:

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

根据标准,如果您收到 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,则不应自动执行重定向。而是要求用户干预。 The RFC requires this

【讨论】:

猜你喜欢
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多