【问题标题】:Not getting the right header response code with HttpUrlConnection未使用 HttpUrlConnection 获得正确的标头响应代码
【发布时间】:2015-02-28 19:15:54
【问题描述】:

我的情况很简单。

给定一个 URL,服务器标头响应代码将为 HTTP 200。

现在我正在尝试使用另一个 URL,其中服务器首先响应 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 包含标题键:'location',但正如预期的那样,connection.getheaderFields() 不包含它。

【问题讨论】:

    标签: java android http httpurlconnection


    【解决方案1】:

    【讨论】:

    • 我明白了。尽管在这种情况下,setInstanceFollowRedirects 将是处理此问题的正确方式。但是,设置它会给我一个不同的响应代码,即 HTTP 301(永久移动)。但是它确实给了我正在寻找的标题键。无论如何,谢谢。
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多