使用HttpClient:
正如njzk2建议的那样,HttpClient()它非常简单:
HttpResponse response = new HttpClient().execute(new HttpHead(myUrl));
Run Code Online (Sandbox Code Playgroud)
但是,无法关闭连接存在问题.通常在HttpClient上,您可以使用以下命令获取实体:
HttpEntity entity = response.getEntity();
Run Code Online (Sandbox Code Playgroud)
然后你会得到来自实体的输入流
InputStream instream = entity.getContent();
...
instream.close();
Run Code Online (Sandbox Code Playgroud)
通过关闭输入流,连接将关闭.但是,在HEAD请求的情况下,实体似乎是null(可能是因为HEAD请求不在响应中返回正文),因此无法获取和关闭输入流,并且连接也不会关闭.
在他的答案的最后一个编辑中,njzk2建议使用AndroidHttpClient,这是一个更新的实现(API 8),HttpClient它实际上有一个close()方法.我没有用它,但我想它会正常工作.但是,正如Android开发团队建议的那样,HttpUrlConnection应该是首选的Android客户端.
使用HttpUrlConnection:
实际上,HEAD使用HttpUrlConnection并确保连接关闭似乎很容易:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
简单地说:
HttpResponse response = new AndroidHttpClient().execute(new HttpHead(myUrl));
Run Code Online (Sandbox Code Playgroud)
通常,您将在多个连接中使用相同的连接AndroidHttpClient,然后调用close它。