没有使用HttpUrlConnection获得正确的标头响应代码

时间:2015-01-02 12:45:16

标签: java android http httpurlconnection

我的情况很简单。

给定一个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()不包含它。

1 个答案:

答案 0 :(得分:2)