![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IdHTTP, Proxy, Get() [D7, WinXP]
Yegorchic © (2006-07-24 12:14:00)Здравствуйте!
У меня такая проблема: что бы мне закачать определённые файлы надо настройть прокси. Я указываю все параметры (host, port, pass, login) и при выполнении функции Get(AURL: String): string - всё идёт нормально, а про выполнении Get(AURL: String; AContentStream); - ничего не закачивается :(
Почему?
P.S: без прокси весь тот же код работает
P.P.S: Indy 10
Yegorchic (2006-07-25 12:17:00) [1]
> Yegorchic © (25.07.06 12:10) [8]
Ойй!! Извиняюсь, заработало!!
Только что то не понимаю, в чём разница?
Yegorchic (2006-07-25 12:10:00) [2]
> Slym © (25.07.06 11:49) [6]
>
> Чем тебя так не устраивает?
Попробовал, всё равно резальтат то как был.. не закачивается.
А почему ваш код должен был бы заработать? Просто различий сильных то, кажется, нет...
umbra (2006-07-25 11:57:00) [3]а что за прокси?
Slym (2006-07-25 11:49:00) [4]Чем тебя так не устраивает?
Stream:=TMemoryStream.Create;
try
IDHttp.Get(AURL, MStream);
MStream.Position:=0;
MStream.SaveToFile(FileSave);
finally
Stream.Free;
end;
Yegorchic (2006-07-25 10:50:00) [5]Нет, но дело то в том, что зависание начинается ещё до конца загрузки файла. Моментально, можно сказать, при выполнении Get().
И опять же, Position:=0 я не делаю там, где закачка без прокси и всё ОК...
Вот код:
function StartDownload;
begin
HTTP:=TIdHTTP.Create(nil);
MStream:=TMemoryStream.Create;
HTTP.ProxyParams.ProxyServer:=p_host;
HTTP.ProxyParams.ProxyPort:=p_port;
HTTP.ProxyParams.ProxyUsername:=p_login;
HTTP.ProxyParams.ProxyPassword:=p_password;
HTTP.Request.Host:=URL_;
HTTP.OnWork:=OnWork;
HTTP.OnWorkBegin:=OnWorkBegin;
HTTP.OnWorkEnd:=OnWorkEnd;
HTTP.Head(URL_);
HTTP.Get(URL_, MStream);
end;
procedure OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
begin
bytes_load:=AWorkCount;
end;
procedure OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax : Integer);
begin
bytes_total:=AWorkCountMax;
end;
procedure OnWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
MStream.SaveToFile(FileSave);
MStream.Clear;
end;
URL_, p_host, p_login, p_password: string;
p_port: integer;
Если прокси не нужна, то всё они (ну кроме URL_ естественно остаются пустыми).
Slym (2006-07-25 04:35:00) [6]Position:=0;делаешь?
Stream:=TMemoryStream.Create;
try
IDHttp.Get(AURL, Stream);
Stream.Position:=0;
//обработка данных
finally
Stream.Free;
end;
Yegorchic (2006-07-24 21:22:00) [7]
> Slym © (24.07.06 13:48) [1]
TMemoryStream
> umbra © (24.07.06 14:14) [2]
Да, но я говорю просто как есть... мне надо перекачать из интернета файл размером около 1mb, он без прокси качается отлично, но с прокси не качается. Т.е. спрокси процедура Get(AURL: String; AContentStream) НЕ выполняется, а безпрокси выполняется.
Других больше различий просто в коде нет :-(
umbra (2006-07-24 14:14:00) [8]
> У меня такая проблема
на 99 процентов это не имеет к прокси никакого отношения. Если Вы получаете страницу в виде строки (т.е. прокси выдает вам данные), то я не вижу причин, покоторым он не выдаст Вам данные для потока, поскольку прокси НЕ ЗНАЕТ что Вы делаете с данными. Он их просто отдает Вам и все.
Slym (2006-07-24 13:48:00) [9]что в качастве AContentStream передаешь?