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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файла , компонент Swin... 
V
    Опции темы
12usver12
Дата 30.6.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообщем нужно загрузить файл с сервера (www.******.ru/file.rar) , при 
этом передав HttpHeaders как user-agent , host, referer...
увидел компонент SwinHttp - возможно ли в нем такое осуществить ? 
если нет посоветуйте аналог или какое-нить другое решение , библиотеку indy не предлагать , мое приложение без формы...

PM MAIL   Вверх
Snowy
Дата 30.6.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Код

var
  http: TSwinHttp;
begin
  http := TSwinHttp.Create(nil);
  http.InThread := false; // для упрощения кода, пример в синхронном режиме.
  with http.Request do
  begin
    Agent := 'MyAgent';
    Referer := 'http://www.site.ru/';
    url.url := 'http://www.******.ru/file.rar';
  end;
  http.DoRequest;
  if http.Error = 0 then
    http.Response.Content.SaveToFile('C:\file.rar')
  else Messagebox(0, PChar(http.Response.StatusText), 'Error', MB_ICONERROR);
  http.Free;


Также у проперти Request есть свойство Headers: TStringList.
Туда можно засунуть любые дополнительные строки для кустомизации http заголовка.
Пример написан для данной версии.
PM MAIL   Вверх
12usver12
Дата 5.7.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



спасиб , был невнимательным  , 
но у меня нет этого метода 


Код

http.Response.Content.SaveToFile('C:\file.rar')

или это может в более поздней версии есть ? или как его можно заменить

Это сообщение отредактировал(а) 12usver12 - 5.7.2008, 12:51
PM MAIL   Вверх
SneG0K
Дата 6.7.2008, 14:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


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

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



Для этого вполне можно воспользоваться компонентом IdHttp, из ряда индейцев.

Код

var
 file:string;
....
file:=IdHttp.Get('http://*****.****/blablabla/file.rar');

PM WWW Skype   Вверх
Snowy
Дата 7.7.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(12usver12 @  5.7.2008,  09:30 Найти цитируемый пост)
но у меня нет этого метода 
Ээээ...
Он есть, просто пропустил один момент:
Код

TMemoryStream(http.Response.Content).SaveToFile('C:\file.rar');

Вот так. Просто в интерфейсах указан TStream для возможности его прямой подмены на любой другой стрим.
По умолчанию используется внутренний TMemoryStream, но, при желании можно подменить на любой свой. Например так:
Код

var
  http: TSwinHttp;
begin
  http := TSwinHttp.Create(nil);
  http.Response.Content := TFileStream.Create('C:\MyFile.rar', fmCreate); // качаем сразу в файл
  http.InThread := false; // для упрощения кода, пример в синхронном режиме.
  with http.Request do
  begin
    Agent := 'MyAgent';
    Referer := 'http://www.site.ru/';
    url.url := 'http://www.******.ru/file.rar';
  end;
  http.DoRequest;
  if http.Error <> 0 then Messagebox(0, PChar(http.Response.StatusText), 'Error', MB_ICONERROR);
  http.Free; // Стрим убивать не нужно - свин его сам прибъёт

PM MAIL   Вверх
12usver12
Дата 8.7.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



спасибо Snowy , все работает теперь

Это сообщение отредактировал(а) 12usver12 - 8.7.2008, 11:59
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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