首页 > 解决方案 > 检查网址是否为带有扩展名限制的图片

问题描述

如何检查 URL 是否是必须是 PNG、GIF、JPG 格式的图像 URL

我看到可以使用以下代码完成:

URLConnection connection = new URL("http://foo.bar/w23afv").openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");

但是,我需要检查使用Glideor 或OKHttpClient.

如何使用上面提到的两种技术来实现这一点?

标签: androidokhttpokhttp3android-glide

解决方案


如果您只想检查Content-TypeURL,而不实际下载内容,则HTTP HEAD 请求将是合适的。

HEAD 方法与 GET 相同,只是服务器不能在响应中返回消息体。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需传输实体主体本身。这种方法通常用于测试超文本链接的有效性、可访问性和最近的修改。

您可以使用 OkHttp 执行此操作,如下所示:

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
        .url("http://foo.bar/w23afv")
        .head()
        .build();

try {
    Response response = client.newCall(request).execute();
    String contentType = response.header("Content-Type");
    boolean image = false;
    if (contentType != null) {
        image = contentType.startsWith("image/");
    }

} catch (IOException e) {
    // handle error
}

推荐阅读