Я пытаюсь загрузить файл (который я считаю приложением Application / OCTET-STREAM) с веб-страницы.
URL выглядит как http://REDACTED.com/bb/avfile/filename. Когда я вписываю этот URL в браузер (IE или Firefox), файл загружается нормально, размером 72 КБ, без расширения файла, и его можно открыть с помощью моей программы для работы с электронными таблицами. Когда я пытаюсь загрузить файл через программу Java, он получает файл размером всего 70 КБ, который не открывается в моей программе работы с электронными таблицами. Попытка разобрать файл с помощью org.apache.poi.xssf.usermodel. * Приводит к ошибке «Пакет должен содержать часть типа содержимого [M1.13]», что имеет смысл для меня, так как файл меньше, чем файл, загружаемый из Браузер
Кажется, сервер доставит правильный файл, только если запрос URL поступил из браузера. Вот мой код:
String UrlString = "http://REDACTED.com/bb/avfile/filename";
URL internetURL = new URL(UrlString);
URLConnection internetConnection = internetURL.openConnection();
destinationFile = new File(filePath + "test");
org.apache.commons.io.FileUtils.copyURLToFile (internetURL, destinationFile,2000,2000);
Я попытался привести к httpConnection
HttpURLConnection httpConnection = (HttpURLConnection) new URL(UrlString).openConnection();
httpConnection.setRequestMethod("GET");
Я попытался установить методы setRequestProperty так, чтобы заголовки совпадали с тем, что отображается в HTTPFOX, когда я отправляю URL через браузер, как:
httpConnection.setRequestProperty ("Content-Type","application/vnd.ms-excel");
httpConnection.setRequestProperty ("User-Agent","Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1");
// etc,
Также получение файла в виде потока:
destinationFile = new File(filePath + "temp2");
org.apache.commons.io.FileUtils.copyInputStreamToFile
(httpConnection.getInputStream(), destinationFile);
Все методы создают файл, который на 2 КБ меньше файла, загруженного из браузера. Единственное отличие, которое я вижу, это то, что заголовки из браузера, как показывает HTTPFox, показывают строку запроса как «bb / avfile / filenameHTTP1.1» с хостом «REDACTED.com». При добавлении HTTP1.1 к URL-адресу в браузере или в программе создается файл размером 1 КБ, который гласит: «Запрошенное содержимое недоступно». HTTPFox показывает, что нет запросов POST
Я не знаю, как поступить. Любые предложения или идеи о том, что проблема?