26. december 2009 - 19:51
Der er
11 kommentarer og 1 løsning
Check om websiden er online?
Hvordan undersøger man on en webside er tilgængelig før man begynder at hente/undersøge den? Jeg bruger dette html := idhttp1.Get(MyList2[teller1]); til at hente en side ind, og det virker fint hvis den er online, men ellers går programmet helt død. Så jeg skal bruge noget error handling først.
Annonceindlæg fra DE-CIX
26. december 2009 - 20:34
#1
a := '
http://www.experten.dk'; try
idhttp1.Get(a);
except
showmessage('Offline');
exit;
end;
Showmessage('OnLine');
26. december 2009 - 20:36
#2
Hvad med try html := idhttp1.Get(MyList2[teller1]); except showmessage('der opstod en fejl'); end;
26. december 2009 - 20:47
#3
Hvis du altid vil hente den hvis den er tilgængelig, så er løsningen med exception håndtering som i de to foregående kommentarer nok løsningen. Hvis du bare vil checke den uden at hente den, så bruger du HEAD fremfor GET.
26. december 2009 - 22:05
#4
Skidtet fryser stadigvæk på netop den siden som jeg ved er nede pt (nummer 24 i listen). Alle de andre op til da fungere fint. procedure TForm1.Button3Click(Sender: TObject); var html : string; teller : integer; begin for teller := 0 to Mylist2.count -1 do begin showmessage(Mylist2[teller]); try html := idhttp1.Get(MyList2[teller]); except showmessage('Offline'); exit; end; Showmessage('OnLine'); end;
26. december 2009 - 22:08
#5
Hvis jeg sætter en antifreeze på så fryser det kun delvist, og giver stadigvæk ikke showmessage('Offline').
26. december 2009 - 22:17
#6
Hvis det er filen som ikke findes, så burde den ikke fryse. Hvis det er serveren som ikke svarer, så kan det godt tage lang tid. Og bør derfor laves i en separat tråd.
26. december 2009 - 23:05
#7
Prøv at sætte ConnectTimeout og ReadTimeout IdHTTP1.ConnectTimeout:=5000; IdHTTP1.ReadTimeout:=5000;
26. december 2009 - 23:31
#8
5 sekunder er stadig urimelig lang tid at hænge GUI'en.
27. december 2009 - 11:38
#9
5 sek er lang tid ja, og hvis programmet var til andre end mig så skulle jeg finde en anden løsning, men umiddelbart kan jeg sagtens leve med det. Problemet er bare, at jeg kan ikke sætte hverken ConnectTimeout eller ReadTimeout. Delphi aner ikke hvad det er (undeclared identifier). Måske jeg bruger en uddateret version af indy eller...?
27. december 2009 - 11:47
#10
Jeg bruger version 10.2.3
27. december 2009 - 13:49
#11
kroning smid et svar så jeg kan få lukket
27. december 2009 - 13:59
#12
Svar
Kurser inden for grundlæggende programmering