Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检测URL是否有图像文件?_Java_Image_Android Studio_Url_Android Glide - Fatal编程技术网

Java 如何检测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中

问题:

我正在使用Android Studio中的Glide库在imageview中加载来自url的图像,问题是有时url没有任何图像,即url存在,但它不包含任何图像。例如:

1)此url包含一个图像:

2)但此url不包含图像

问题:

在使用Glide库加载图像之前,是否有任何方法可以验证我收到的url是否包含图像?

  • 步骤1:您必须检查URL响应。您可以参考下面的代码。请参阅文档
  • 步骤2:检查它是否是一个带有以下代码的图像
  • 您还可以借助Glide将占位符添加到imageview中。您可以查看占位符

如果两个url在链接中都有
.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