场景
这里的场景很简单:就是我们后台业务数据库中保存了N多的音频的url,前端在通过某些业务逻辑得到对应音频的url,然后播放时发现有少部分url是无效的。那么我们后台就需要把这部分失效的url过滤出来,然后补上去。
分析
http协议中有很多方法:get、post、put、delete、option等等。其实我们这里就只需要判断对应的url是否有效,也就是说我们只需要查询到对应的文件信息,并不需要文件的内容。刚好,这里head方法与get方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
见《HTTP权威指南》截图:
实施
/**
* 验证url是否有效
*
* @param urlStr 待验证的url
* @return
*/
public static boolean verificationUrl(String urlStr) {
try {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3 * 1000);
conn.setRequestMethod("HEAD");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
return true;
}
return false;
} catch (MalformedURLException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
return false;
}
}