Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IdHTTP переадресация. Как получить ссылку? Location срабатывает, но идет загрузка 
:(
    Опции темы
upload
  Дата 22.5.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Есть ссылка: http://www.site.com/watch/325587/good_flv_rolik/

На странице есть кнопка download.
При нажатии идет запрос:
Код

http://download.site.com/download/330760/flv/327464_good_flv_rolik.flv?download=1&ll=1&t=dd


При помощи снифа выяснил что затем идет переадресация на:
Код

http://server434.files.site.com/e4/flv/327464_good_flv_rolik.flv?e=1245598957&h=c8f2600853b46d6c9141fcfad4468bd8

И начинается загрузка ролика (в браузере)

Вопрос: как получить эту самую ссылку после переадресации? Сам ролик скачивать не надо. Только ссылку.

1. Что только не перепробовал. Пока не выходит.

Код

IdHTTP.get('http://download.site.com/download/330760/flv/327464_good_flv_rolik.flv?download=1&ll=1&t=dd');
link:=Idhttp.Response.Location;


Проблема в том, что начинается загрузка ролика и пока она не закончится Idhttp.Response.Location не сработает.

2. У IdHTTP есть событие OnRedirect. Если там написать:
Код

memo1.Text:= IdHTTP.Response.Location;

То в memo1 появляется ссылка на которую переадресовывает, но ЗАГРУЗКА ПРОДОЛЖАЕТСЯ.
Мне нужна только ссылка. 

Пробовал
Код

IdHTTP.Disconnect;
// и
IdHTTP.DisconnectSocket;
// и
IdHTTP.Destroying;

Безполезно. ЗАГРУЗКА так и идет (снифом смотрю). Как быть?

Добавлено через 8 минут и 18 секунд
Код

  IdHTTP.HandleRedirects:=false;
  IdHTTP.get(DownloadUrl);
  Link:= IdHTTP.Response.Location;
  memo1.Text:=Link;


Ошибка на Link:= IdHTTP.Response.Location;
PM MAIL   Вверх
SneG0K
Дата 22.5.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Тебе надо определить, как идет переадресация. Возможно она идет через скрипт, тогда найди скрипт и пропарсь адресс
PM WWW Skype   Вверх
MetalFan
Дата 22.5.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(upload @  22.5.2009,  19:14 Найти цитируемый пост)
Ошибка на Link:= IdHTTP.Response.Location; 

и какая же ошибка?

по идее, при HandleRedirects = false Get или Post должны выкидывать исключение, которое нужно поймать и обработать.
как то так:
Код

 try
...
    AResponse := FIdHTTP.Post( AURL, AData );
  except
...
   on E: EIdHTTPProtocolException do
     if (E.ErrorCode = 302) or
        (E.ErrorCode = 301) then
     begin
       lRedirectUrl := FIdHTTP.Response.Location;
     end
...

в ином случае скорее всего происходит то, что предположил SneG0K


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
upload
Дата 22.5.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Цитата(SneG0K @ 22.5.2009,  19:51)
Тебе надо определить, как идет переадресация. Возможно она идет через скрипт, тогда найди скрипт и пропарсь адресс

Нет, не через скрипт. Напрямую.

user posted image

Добавлено через 12 минут и 53 секунды
Я смысл понял. Только вот не пойму почему

user posted image
PM MAIL   Вверх
MetalFan
Дата 22.5.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



этот код не помню под какую версию... то ли 9ка то ли 10ка.
посмотри поля класса EIdHTTPProtocolException... может там по-другому называется это поле.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
upload
Дата 22.5.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.5.2009

Репутация: нет
Всего: нет



Может unit какой добавить? Попробовал ScktComp - не помогло.

Добавлено через 13 минут и 29 секунд
Так заработало:

Код

IdHTTP.HandleRedirects:=false;
    try
      IdHTTP.get(DownloadUrl);
    except
    on E: EIdHTTPProtocolException do
     begin
     {if (E.ErrorCode = 302) or
        (E.ErrorCode = 301) then
     begin }
     Link:= IdHTTP.Response.Location;
     memo1.Text:=Link;
     //end;
     end;
     end;
 end;
end;


Ладно, оставлю так. Но всё равно странно. Почему ErrorCode он не знает.
PM MAIL   Вверх
MetalFan
Дата 22.5.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Ctrl+Click может глянешь?  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.