Java 如何检测URL是否有图像文件?
问题: 我正在使用Android Studio中的Glide库在imageview中加载来自url的图像,问题是有时url没有任何图像,即url存在,但它不包含任何图像。例如: 1)此url包含一个图像: 2)但此url不包含图像 问题: 在使用Glide库加载图像之前,是否有任何方法可以验证我收到的url是否包含图像?Java 如何检测URL是否有图像文件?,java,image,android-studio,url,android-glide,Java,Image,Android Studio,Url,Android Glide,问题: 我正在使用Android Studio中的Glide库在imageview中加载来自url的图像,问题是有时url没有任何图像,即url存在,但它不包含任何图像。例如: 1)此url包含一个图像: 2)但此url不包含图像 问题: 在使用Glide库加载图像之前,是否有任何方法可以验证我收到的url是否包含图像? 步骤1:您必须检查URL响应。您可以参考下面的代码。请参阅文档 步骤2:检查它是否是一个带有以下代码的图像 您还可以借助Glide将占位符添加到imageview中
- 步骤1:您必须检查URL响应。您可以参考下面的代码。请参阅文档
- 步骤2:检查它是否是一个带有以下代码的图像
- 您还可以借助Glide将占位符添加到imageview中。您可以查看占位符
.jpg
,但其中一个不包含图像,那么不,如果不先加载链接内容,您怎么知道?否则,请在调用glide库之前对数据进行卫生检查(404或其他错误)。执行HEAD命令并查看内容类型
响应标题。glide中没有适用于您的场景的内置机制。您必须手动处理它。第二个URL引用的资源不存在。这会获取资源,这是特别不需要的,并且不会告诉它是否是OP要求的图像。问题中提供的两个链接都是图像,但是服务器没有准备好处理其中一个请求。在检查是否是图像之前,必须先检查链接是否处于活动状态。不过,我会编辑我的答案。人们可以同时检查“链接是否处于活动状态”和它是否是图像。您不需要两个URL
s、两个HttpURLConnections
,以及两个HTTP请求/响应周期。其中一个链接根本不存在:它得到了一个404未找到。与服务器未“准备好处理请求”无关。。
URL u = new URL ( "http://www.example.com/");
HttpURLConnection hUC = ( HttpURLConnection ) u.openConnection ();
hUC.setRequestMethod ("GET"); //OR hUC.setRequestMethod ("HEAD");
hUC.connect () ;
int code = hUC.getResponseCode() ;
System.out.println(code);
URLConnection connection = null;
try {
connection = new URL(imageURL).openConnection();
} catch (IOException e) {
e.printStackTrace();
}
String contentType = connection.getHeaderField("Content-Type");
boolean img = contentType.startsWith("image/"); // if img is true then it is an image