Конференция "Сети" » Загрузка файла из интернета [D5, WinXP]
 
  • Bel © (12.11.09 09:58) [0]
    Уважаемые мастера, какими способами можно загрузить файл из интернета?
    Стоит задача загрузить файл и обработать его. Есть ограничения среды разработки - это не чистый делфи, а DelphiScript, фактически урезанный делфи. Найденные здесь и на других ресурсах способы не подходят: InetAPI (OpenInternet и т.д.) использовать нельзя; THTTP, TidHTTP также не получается.
    Опробованные мной способы:
    1. Компонента TExplorer (по сути тот же TWebBrowser - обертка для AtiveX компоненты от микрософта).
    2. CreateOleObject('InternetExplorer.Application').
    3. ShellExecute(Handle, 'open', '<URL>', ...).
    По сути эти три способа есть обращение к одному и тому же объекту. Навигация, в принципе, возможна, но проблема в том, что Explorer не знает типа загружаемого файла (.tsv) и выдает стандартное окно с запросом (Найти соответствие, Сохранить, Отмена). Поскольку процедура загрузки должна выполняться автоматически, никакие дополнительные запросы неприемлемы. Как обойти этот запрос и сохранить файл на диск, я не нашел. В принципе, если это удастся сделать, будет достаточно.
    4. Пытался даже загрузить через xml:
    xmlDoc := CreateOleObject('MSXML.DOMDocument');
    if xmlDoc.Load(URL) then ...
    Однако, он, видать, не может грузить не-xml файлы.

    В общем, какие еще есть способы загрузить файл без дополнительных вопросов?
  • Медвежонок Пятачок © (12.11.09 11:28) [1]
    оле + xmlhttprequest
  • Separator © (12.11.09 13:26) [2]
  • Bel © (12.11.09 14:07) [3]
    > Separator ©   (12.11.09 13:26) [2]
    Этот метод я тоже находил. Не получается. Поэтому я в своем вопросе и упомянул об этом.  > InetAPI (OpenInternet и т.д.) использовать нельзя

    > Медвежонок Пятачок ©   (12.11.09 11:28) [1]
    О! А вот так получилось, грузит.
    В MSXML SDK этот интерфейс находится в разделе Helper API. Очевидно, он используется самим MSXML для загрузки.
    Большое спасибо за наводку!
  • Bel © (12.11.09 14:12) [4]
    Если кому-нибудь понадобится на будущее, код в три строки:

       v := CreateOleObject('MSXML2.XMLHTTP');
       v.Open('GET', 'http://cbrates.rbc.ru/tsv/840/2009/11/12.tsv', False);
       v.Send;
       ShowMessage(v.StatusText);

  • Bel © (12.11.09 14:16) [5]
    Упс, ошибочка...

       ShowMessage(v.ResponseText);

  • Zhanna (12.11.09 23:59) [6]
    Удалено модератором
    Примечание: Спам
  • czech (17.03.11 18:45) [7]
    Bel, тебе респект и уважуха! Самому нужно было открывать файл Онлайн..
  • czech (17.03.11 18:45) [8]
    Удалено модератором
 
Конференция "Сети" » Загрузка файла из интернета [D5, WinXP]
Есть новые Нет новых   [134436   +26][b:0][p:0.001]