Форум: "Сети";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизIdHTTP, Proxy, Get() Найти похожие ветки
← →
Yegorchic © (2006-07-24 12:14) [0]Здравствуйте!
У меня такая проблема: что бы мне закачать определённые файлы надо настройть прокси. Я указываю все параметры (host, port, pass, login) и при выполнении функции Get(AURL: String): string - всё идёт нормально, а про выполнении Get(AURL: String; AContentStream); - ничего не закачивается :(
Почему?
P.S: без прокси весь тот же код работает
P.P.S: Indy 10
← →
Slym © (2006-07-24 13:48) [1]что в качастве AContentStream передаешь?
← →
umbra © (2006-07-24 14:14) [2]
> У меня такая проблема
на 99 процентов это не имеет к прокси никакого отношения. Если Вы получаете страницу в виде строки (т.е. прокси выдает вам данные), то я не вижу причин, покоторым он не выдаст Вам данные для потока, поскольку прокси НЕ ЗНАЕТ что Вы делаете с данными. Он их просто отдает Вам и все.
← →
Yegorchic © (2006-07-24 21:22) [3]
> Slym © (24.07.06 13:48) [1]
TMemoryStream
> umbra © (24.07.06 14:14) [2]
Да, но я говорю просто как есть... мне надо перекачать из интернета файл размером около 1mb, он без прокси качается отлично, но с прокси не качается. Т.е. с прокси процедура Get(AURL: String; AContentStream) НЕ выполняется, а без прокси выполняется.
Других больше различий просто в коде нет :-(
← →
Slym © (2006-07-25 04:35) [4]Position:=0;делаешь?
Stream:=TMemoryStream.Create;
try
IDHttp.Get(AURL, Stream);
Stream.Position:=0;
//обработка данных
finally
Stream.Free;
end;
← →
Yegorchic © (2006-07-25 10:50) [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 11:49) [6]Чем тебя так не устраивает?
Stream:=TMemoryStream.Create;
try
IDHttp.Get(AURL, MStream);
MStream.Position:=0;
MStream.SaveToFile(FileSave);
finally
Stream.Free;
end;
← →
umbra © (2006-07-25 11:57) [7]а что за прокси?
← →
Yegorchic © (2006-07-25 12:10) [8]
> Slym © (25.07.06 11:49) [6]
>
> Чем тебя так не устраивает?
Попробовал, всё равно резальтат то как был.. не закачивается.
А почему ваш код должен был бы заработать? Просто различий сильных то, кажется, нет...
← →
Yegorchic © (2006-07-25 12:17) [9]
> Yegorchic © (25.07.06 12:10) [8]
Ойй!! Извиняюсь, заработало!!
Только что то не понимаю, в чём разница?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c