android - 检查网址是否为带有扩展名限制的图片
问题描述
如何检查 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/");
但是,我需要检查使用Glide
or 或OKHttpClient
.
如何使用上面提到的两种技术来实现这一点?
解决方案
如果您只想检查Content-Type
URL,而不实际下载内容,则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
}
推荐阅读
- xml - 如何使用 XSD 将 XML 文件读入coldfusion
- performance-testing - 为什么我收到 Gatling 错误:“[gatling-http-1-14] WARN io.netty.channel.nio.NioEventLoop”并且 Gatling 在任何错误后都会杀死 VU
- flutter - 如何在 Flutter 中打开弹出窗口时修复背景变黑
- javascript - 浏览器扩展是否可以修改网页,以便使用它的盲人可以使用键盘访问某些 DOM 元素?
- r - 如何修复 R 中的以下错误消息:“data.frame 参数中的错误意味着行数不同”?
- ado - ado访问中的删除按钮功能不起作用
- presto - 无法将 PrestoDB 连接到 Apache Superset
- android - Android导航:从backStack中删除一个活动
- c# - .NET WebAPI 在启动时缓存数据
- primeng - PrimeNG Dropdown LazyLoad 事件未触发