Клуб API Диска

REST API: Скачивание файла

7 февраля 2015, 14:03

Научился получать токен, получать информацию о файлах, загружать на диск, а вот со скачиванием проблема - получаю ошибку 302: временно перемещен. Делаю все как написано в документации: получаю через rest api ссылку на файл, методом GET пытаюсь скачать файл по ссылке, передав предварительно в заголовке OAuth токен. Если полученную ссылку вставить в браузер, то файл качается. Использую Lazarus 1.2.6 + Synapse. Перед Synapse использовал lNet, но с ним была обратная проблема: закачка работала, а загрузка нет. Снова попробовал с помощью lNet скачать - теперь и с ним такая же ошибка.

2 комментария
Подписаться на комментарии к посту

302 -- это не ошибка, это перенаправление. Нужно всего лишь прейти по адресу на который вас перенаправляет сервер и от туда скачать содержимое.

Браузер автоматически обрабатывает перенаправления, поэтому там вы не видите 302 ответа. Большинство HTTP клиентов поддерживают настройку, которая заставяет клиент самтостоятельно следовать перенаправлениям получаемым от сервера. Если ваш клиент не поддерживает автоматический перехрд, то можно в ручную при получении ответа 3xx брать значение из заголовка ответа Location и переходить по URL, указанному там.

Этот ответ на SO должен помочь: http://stackoverflow.com/a/4573746/1570936 (см. параметр компонента HandleRedirects).

Кстати у меня тоже были проблемы со скачиванием файлов через REST API. Сервер не только перебрасывает по 302, но и еще в каждом запросе ждет заголовок токена. В итоге сделал само скачивание через WebDAV.

Ребята из Яндекса, присмотритесь к скачиванию, какой-то у вас там кривой подход, затрудняющий интеграцию.