Ошибка при загрузке файла с указанного URL - PullRequest
0 голосов
/ 13 сентября 2011

Я пытаюсь загрузить указанный URL: http://www.addic7ed.com/original/9521/7

, но когда я пытаюсь загрузить файл, используя мой код Java:

URL url = new URL("http://www.addic7ed.com/original/9521/7");
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream("abc.srt"); 
fos.getChannel().transferFrom(rbc, 0, 1 << 24);

html page загружается, тогда какзагружаемый файл должен быть .srt extension.

Но когда я пытаюсь скачать вышеуказанную ссылку, используя Internet Download Manager, файл загружается.

IDM преобразует приведенное вышеURL в http://www.addic7ed.com/srtcache/Supernatural/Supernatural%20-%2004x06%20-%20Yellow%20Fever.720p%20CTU.English.orig.Addic7ed.com.srt

Так что мой вопрос, как добиться этого в JAVA ... ??Есть ли доступный API для этого.

Ответы [ 3 ]

2 голосов
/ 13 сентября 2011

Вы смотрели файл HTML? Я подозреваю, что это на самом деле страница с ошибкой с сервера, и она содержит подсказки о том, что на самом деле происходит.

Вот несколько возможностей:

  • Возможно, вам необходимо предоставить учетные данные для аутентификации.

  • Возможно, сервер отправляет ответ о перенаправлении (3xx), и что сторона клиента не выполняет перенаправление.

  • Возможно, вам нужно установить несколько дополнительных заголовков, чтобы сервер понял, что он не должен превращать ответ в HTML. Например, заголовок Accept.

Но учтите, что детали будут зависеть от сервера, с которым вы пытаетесь установить связь.


Если бы я пытался загружать файлы программно на Java, я бы использовал библиотеки HttpUrlConnection или Apache HttpClient. И то, и другое даст вам больше контроля над процессом загрузки, чем простое использование URL.openStream()

1 голос
/ 12 октября 2011

Вероятно, это связано с тем, что http-ответ от http://www.addic7ed.com/original/9521/7 - это перенаправление 302, которое ваш Java-код обрабатывает неправильно. IDM правильно обрабатывает перенаправление. Отличный инструмент для использования, если вы используете систему * nix или у вас установлен Cygwin в Windows, curl.

curl -v http://myurl

отобразит всю информацию о трафике http (запрос / ответ)

0 голосов
/ 13 сентября 2011

Вы пробовали с?

URL url = new URL("http://www.addic7ed.com/original/9521/7");
...