Android:如何发出HTTP HEAD请求?

前端之家收集整理的这篇文章主要介绍了Android:如何发出HTTP HEAD请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想做一个简单的HTTP HEAD请求,没有keep-alive.

我怎么能在Android中做到这一点?

解决方法

使用HttpClient:

正如njzk2建议的那样,使用HttpClient()它非常简单:

HttpResponse response = new HttpClient().execute(new HttpHead(myUrl));

但是,无法关闭连接存在问题.通常在HttpClient上,您将使用以下内容获取实体:

HttpEntity entity = response.getEntity();

然后你会得到来自实体的输入流

InputStream instream = entity.getContent();
...
instream.close();

通过关闭输入流,连接将关闭.
但是,在HEAD请求的情况下,实体似乎为空(可能是因为HEAD请求不返回响应中的主体),因此无法获取关闭输入流,并且连接也不会关闭.

在他的答案的最后编辑中,njzk2建议使用AndroidHttpClient,这是HttpClient的最新实现(API 8),它实际上有一个close()方法.我没有用它,但我想它会正常工作.但是,正如Android开发团队所建议的那样,HttpUrlConnection应该是首选的Android客户端.

使用HttpUrlConnection:

实际上,使用HttpUrlConnection创建HEAD请求似乎很容易,并确保连接关闭

HttpURLConnection urlConnection = null;
    System.setProperty("http.keepAlive","false");
    try {
        URL url = new URL(stringUrl);
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("HEAD");
        urlConnection.getInputStream().close();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }

猜你在找的Android相关文章