Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用HttpUrlConnection无法获取正确的标头响应代码_Java_Android_Http_Httpurlconnection - Fatal编程技术网

Java 使用HttpUrlConnection无法获取正确的标头响应代码

Java 使用HttpUrlConnection无法获取正确的标头响应代码,java,android,http,httpurlconnection,Java,Android,Http,Httpurlconnection,我有一个简单的情况 给定一个URL,服务器头响应代码将是HTTP 200 现在我正在尝试另一个URL,其中服务器首先使用HTTP302(找到)进行响应,然后重定向并使用头HTTP200代码进行响应 因此,在第二种情况下,为什么connection.getResponseCode()不返回HTTP 302,而是直接返回HTTP 200。实际上,我对检查初始HTTP 302响应中的头响应感兴趣 下面是简化的HttpUrlConnection代码(几乎是许多开源实现的复制品) private int

我有一个简单的情况

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

现在我正在尝试另一个URL,其中服务器首先使用HTTP302(找到)进行响应,然后重定向并使用头HTTP200代码进行响应

因此,在第二种情况下,为什么
connection.getResponseCode()
不返回HTTP 302,而是直接返回HTTP 200。实际上,我对检查初始HTTP 302响应中的头响应感兴趣

下面是简化的HttpUrlConnection代码(几乎是许多开源实现的复制品)

private int responseCode;
私人地图领馆;
公共字符串getString(字符串url)
{
字符串响应=null;
尝试
{
URL mUrl=新URL(URL);
HttpURLConnection connection=(HttpURLConnection)mUrl.openConnection();
connection.setRequestMethod(“GET”);
responseCode=connection.getResponseCode();
headerFields=connection.getHeaderFields();
/*用于获取流+StringBuilder等的样板缓冲读取器内容*/
}
最后
{
连接断开();
}
返回响应;
}

额外信息:HTTP 302包含头键:“location”,尽管与预期一样,
connection.getheaderFields()不包含它

您可以配置是否自动遵循重定向;看。

我明白了。尽管在这种情况下,
setInstanceFollowRedirects
将是正确的处理方式。不过,设置此选项会给我一个不同的响应代码,即HTTP 301(永久移动)。但是它确实给了我我要找的头球键。不管怎样,谢谢。
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;
}