Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2012, 16:29   #1
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию Подвисает idhttp в потоке + proxy

Доброе время суток, друзья!

Помогите пожалуйста. Есть два вопроса.
1. Программа зависает когда idhttp - проверяет более 30 сайтов. Можно сказать не зависает, а как то по другому работает...
2. Как можно сделать, чтоб если прокси плохой, то переключалась на другой. Я пробовал через if else но, что то не получается....

p.s Чтоб решить первую проблему, я пробовал убивать процесс idhttp и создавать в начале потока его заново. Правильно ли это?

Вот мой код:
Код:
procedure pars_rus.NextPlease;
var i:integer;
      start:integer;
I_s:integer;
s2:String;
m:integer;
ip, port:string;
 sm:string;
begin
  http:=tidhttp.create(nil);
  with http do
    begin
      allowcookies:=true;
      handleredirects:=True;
      Request.UserAgent:=useragent[Random(useragent.Count-1)];
      Request.Connection:='keep-alive';
    end;
  start:=10;
 while start<=200 do begin
 try
  s:=http.get(url+'&start='+inttostr(start));
  with form1.Label2 do Caption:=inttostr(strtoint(Caption)+1);
except
  { cw:=getnumberproxy;
  sm:=form1.Memo2.Lines[cw];
   m := Pos(':',sm);
   IP := Copy(sm,1,m-1);
   PORT := Copy(sm,m+1,Length(sm));
    with http do
    begin
    proxyparams.ProxyServer:=ip;
    proxyparams.ProxyPort:=strtoint(port);   }
    ShowMessage('БАН!!!');
    end;
     s:=http.get(url+'&start='+inttostr(start));
  with form1.Label2 do Caption:=inttostr(strtoint(Caption)+1);
end;
  if POS('Поиск', s)<>0 then begin
    Synchronize(IsNeeded);
    start:=0;
    exit;
    http.Free;
  end;
  start:=start+10;
 end;


procedure pars_rus.Execute;
var
 i:integer;
 m:integer;
 ip:string;
 port:string;
 sm:string;
begin
for i:=0 to form2.Memo1.Lines.Count-1 do begin
  http:=tidhttp.create(nil);
  with http do
    begin
      allowcookies:=true;
      handleredirects:=True;
      Request.UserAgent:=useragent[Random(useragent.Count-1)];
      Request.Connection:='keep-alive';
    end;
zapros:= URLEncode(AnsitoUTF8(form2.Memo1.Lines[i]) );
url:='http://URL'+zapros;
try
begin
s:=http.Get('http://URL'+zapros);
end;
  with form1.Label2 do Caption:=inttostr(strtoint(Caption)+1);
except
begin
  { cw:=getnumberproxy;
   sm:=form1.Memo2.Lines[cw];
    m := Pos(':',sm);
    IP := Copy(sm,1,m-1);
    PORT := Copy(sm,m+1,Length(sm));
    with http do
    begin
    proxyparams.ProxyServer:=ip;
   proxyparams.ProxyPort:=strtoint(port);    }
   showmessage('БАН!!!');
    end;
s:=http.Get('URL'+zapros);
  with form1.Label2 do Caption:=inttostr(strtoint(Caption)+1);
end;
http.Free;
end;
if POS('Поиск', s)<>0 then Synchronize(IsNeeded) else NextPlease;
 end;
Заранее большое спасибо!
record222 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdHTTP 1 подвисает форма gufon Общие вопросы Delphi 5 23.02.2012 02:41
Иногда подвисает компьютер Yarigk Компьютерное железо 9 14.09.2011 08:55
Программа подвисает prod87 Общие вопросы Delphi 13 23.07.2010 22:46
IdHTTP и Proxy nikoleg85 Работа с сетью в Delphi 4 07.12.2009 14:54