我的情况很简单。
给定一个URL,服务器头响应代码将为HTTP 200。
现在我尝试使用另一个URL,其中服务器FIRST使用HTTP 302(已发现)进行响应,然后重定向并使用标头HTTP 200代码进行响应。
因此,在第二种情况下,为什么connection.getResponseCode()
不返回HTTP 302而是直接返回HTTP 200.我实际上对检查初始HTTP 302响应中的标头响应感兴趣
这里是简化的HttpUrlConnection代码(几乎是许多开源实现的副本)。
private int responseCode;
private Map<String, List<String>> headerFields;
public String getString(String url)
{
String response = null;
try
{
URL mUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) mUrl.openConnection();
connection.setRequestMethod("GET");
responseCode = connection.getResponseCode();
headerFields = connection.getHeaderFields();
/* boilerplate buffered reader stuffs for getting stream + StringBuilder etc etc.*/
}
finally
{
connection.disconnect();
}
return response;
}
额外信息:HTTP 302包含标题密钥:&#39; location&#39;尽管如预期的那样,connection.getheaderFields()
不包含它。
答案 0 :(得分:2)