gpt4 book ai didi

Android:如何发出 HTTP HEAD 请求?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:47 26 4
gpt4 key购买 nike

我想发出一个简单的 HTTP HEAD 请求,没有保持 Activity 状态。

我如何在 Android 中做到这一点?

最佳答案

使用 HttpClient:

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

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

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

HttpEntity entity = response.getEntity();

然后您将从实体获取输入流

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

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

在对他的回答的最后一次编辑中,njzk2 建议使用 AndroidHttpClient,这是 HttpClient 的最新实现(API 8),它实际上有一个 关闭()方法。我没用过,但我想它会很好用。但是,正如 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:如何发出 HTTP HEAD 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com