我想做一个简单的http头请求,而不是保持活跃。
我怎么能在安卓上做到呢?
最佳答案:
使用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),它实际上有一个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();
}
}