java - 从 URL 检查内容类型

标签 java url httpurlconnection content-type

我问这个question之前和Evgeniy Dorofeev回答了它。虽然只为直接链接工作,但我接受了他的回答。他刚刚告诉我如何从直接链接检查内容类型:

String requestUrl = "https://dl-ssl.google.com/android/repository/android-14_r04.zip";
URL url = new URL(requestUrl);
URLConnection c = url.openConnection();
String contentType = c.getContentType();

据我所知,有两种 URL 类型可以下载文件:

  • 直接链接。例如:https://dl-ssl.google.com/android/repository/android-14_r04.zip .从这个链接,我们可以直接下载数据并获取文件名,包括文件扩展名(在这个链接中,.zip 扩展名)。这样我们就可以知道要下载什么文件了。您可以尝试从该链接下载。
  • 间接链接。例如:http://www.example.com/directory/download?file=52378 .您是否尝试过从 Google 云端硬盘下载数据?当从 Google Drive 下载数据时,它会给你一个间接的链接,比如上面的链接。我们永远不知道链接是否包含文件或网页。此外,我们不知道文件名和文件扩展名是什么,因为这种链接类型不明确且随机。

我需要检查它是文件还是网页。如果内容类型是文件,我必须下载它。

所以我的问题是:

  • 如何检查非直接链接的内容类型?
  • 如该问题的评论所示,HTTP 重定向能否解决问题?

感谢您的帮助。

最佳答案

打开 URLConnection 后,将返回一个头文件。里面有一些关于这个文件的信息。你可以从那里拉你想要的东西。例如:

URLConnection u = url.openConnection();
long length = Long.parseLong(u.getHeaderField("Content-Length"));
String type = u.getHeaderField("Content-Type");

length 是以字节为单位的文件大小,type 类似于 application/x-dosexecapplication/x- rar.

关于java - 从 URL 检查内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145559/

相关文章:

java - 记录器的使用,参数化更好还是使用 + 添加参数?

javascript - 如何编写/更改查询字符串而不导致浏览器加载新页面

Java - 如何通过 HttpUrlConnection 发送表单数据或 www-form-urlencoded 数据

android - HttpUrlConnection 请求在不读取响应的情况下无法工作

java - 带有 URLConnection 和 getInputStream 的 IOException

java - 如何将文件从文件选择器传递到函数?

java - ConcurrentHashMap 上的同步

java - 在Java/Android中获取年、月、日和时间形式 "Tue, 12 Jan 2016 09:40:07 GMT"

javascript - 在地址栏中使用唯一 URL 打开 Colorbox

Android,如何以编程方式在任何浏览器中阻止 URL?