Avatar billede jacks222 Nybegynder
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.
Avatar billede vallemanden Nybegynder
26. december 2009 - 20:34 #1
a := 'http://www.experten.dk';
  try
    idhttp1.Get(a);
  except
  showmessage('Offline');
  exit;
  end;
  Showmessage('OnLine');
Avatar billede kroning Nybegynder
26. december 2009 - 20:36 #2
Hvad med

try
html := idhttp1.Get(MyList2[teller1]);
except
showmessage('der opstod en fejl');
end;
Avatar billede arne_v Ekspert
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.
Avatar billede jacks222 Nybegynder
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;
Avatar billede jacks222 Nybegynder
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').
Avatar billede arne_v Ekspert
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.
Avatar billede kroning Nybegynder
26. december 2009 - 23:05 #7
Prøv at sætte ConnectTimeout og ReadTimeout

IdHTTP1.ConnectTimeout:=5000;
IdHTTP1.ReadTimeout:=5000;
Avatar billede arne_v Ekspert
26. december 2009 - 23:31 #8
5 sekunder er stadig urimelig lang tid at hænge GUI'en.
Avatar billede jacks222 Nybegynder
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...?
Avatar billede kroning Nybegynder
27. december 2009 - 11:47 #10
Jeg bruger version 10.2.3
Avatar billede jacks222 Nybegynder
27. december 2009 - 13:49 #11
kroning smid et svar så jeg kan få lukket
Avatar billede kroning Nybegynder
27. december 2009 - 13:59 #12
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester