Я задал этот вопрос раньше, и Евгений Дорофеев ответил на него. Хотя работал только на прямую связь, но я принял его ответ. Он просто рассказал мне о проверке типа контента из прямой ссылки:
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
:
.zip
). Поэтому мы можем знать, какой файл нужно загрузить. Вы можете попробовать скачать по этой ссылке.Мне нужно проверить, является ли это файлом или веб-страницей. Я должен загрузить его, если тип содержимого - это файл.
Поэтому мой вопрос:
Спасибо за вашу помощь.
После открытия URLConnection возвращается файл заголовка. В нем есть информация о файле. Вы можете тянуть то, что вы хотите оттуда. Например:
URLConnection u = url.openConnection();
long length = Long.parseLong(u.getHeaderField("Content-Length"));
String type = u.getHeaderField("Content-Type");
length
- размер файла в байтах, type
- это что-то вроде application/x-dosexec
или application/x-rar
.
URLConnection
метод getHeaderField()
возвращает поле заголовка Content-Type
. Этот метод возвращает то же поле заголовка с getContentType()
. Извините, я не могу принять этот ответ.
Такие ссылки перенаправляют браузеры на фактический контент с помощью перенаправления HTTP. Чтобы получить правильный тип контента, все, что вам нужно сделать, - это указать HttpURLConnection
чтобы следовать переадресации, установив setFollowRedirects()
в true (документально здесь).
MimeTypeMap.getFileExtensionFromUrl(URL)