Ok, die Aufgabenstellung klingt vernünftig, da hab' ich dann nix mehr zu meckern
Hier ein Quelltext, den ich für idHTTP.Get nutze, mit ein bisserl Fehlertoleranz:
Delphi-Quellcode:
function MyHTTPGet(sURL :
String; slHTML : TStrings; slAHRef : TStrings;
var sMessage :
String; iRedirect : Integer) : Boolean;
var
iError : Integer;
begin
Result := False;
sMessage := '
ok';
dmPascalScript.WebIndex.Clear;
slHTML.Clear;
slAHref.Clear;
iError := 0;
repeat
try
dmPascalScript.http.RedirectMaximum := iRedirect;
dmPascalScript.http.HandleRedirects := iRedirect <> 0;
dmPascalScript.WebIndex.HTML.Add(dmPascalScript.http.Get(sUrl));
dmPascalScript.http.Disconnect(True);
dmPascalScript.http.IOHandler.InputBuffer.Clear;
Result := True;
except
on e :
Exception do begin
sMessage := AnsiReplaceText(e.
Message,#13#10,'
');
if e.
Message = '
Connection Closed Gracefully.'
then begin
Inc(iError);
end else begin
iError := MaxInt;
case dmPascalScript.http.ResponseCode
of
301, 302 :
begin
dmPascalScript.PSReg.WriteAppLog(Format('
Scriptaufruf : HTTPGet(%s)',[sUrl]));
dmPascalScript.PSReg.WriteAppLog(Format('
Fehlermeldung: %s',[sMessage]));
dmPascalScript.PSReg.WriteAppLog(Format('
Location : %s',[dmPascalScript.http.Response.Location]));
end;
else
dmPascalScript.PSReg.WriteAppLog(Format('
Scriptaufruf : HTTPGet(%s)',[sUrl]));
dmPascalScript.PSReg.WriteAppLog(Format('
Fehlermeldung: %s',[sMessage]));
dmPascalScript.PSReg.WriteAppLog(Format('
ResponseCode : %d',[dmPascalScript.http.ResponseCode]));
end;
end;
dmPascalScript.http.Disconnect(True);
dmPascalScript.http.IOHandler.InputBuffer.Clear;
end;
end;
until Result
or (iError > 4);
if Result
then begin
dmPascalScript.WebIndex.PrepareHtmlText;
dmPascalScript.WebIndex.GetHeader;
dmPascalScript.WebIndex.GetBody;
dmPascalScript.WebIndex.GetAHRef;
slHTML.AddStrings(dmPascalScript.WebIndex.HTML);
slAHRef.AddStrings(dmPascalScript.WebIndex.AHRef);
end;
end;
WebIndex ist ein Parser, der den Quelltext der
HTML-Seiten in eine Form umwandelt, die eine (halbwegs) automatische Weiterverarbeitung zulässt.
dmPascalScript ist ein Datenmodul, dessen Komponenten genutzt werden.
slHTML enthält den aufbereiteten Inhalt der Webseite, slAHref enthält alle in der Webseite gefundenen Links.
Die Routine selbst wird über Pascalscript aus 'nem Programm aufgerufen, dass u. a. der automatischen Auswertung von Webseiten dient.
In dem Case-Block könntest Du dann eventuell noch die 503 abfragen. und da ein Sleep einbauen.
Schau mal bitte, ob der von Dir gesuchte Inhalt eventuell in idhttp.ResponseText zu finden ist. idHTTP.ResponseCode müsste die 503 enthalten.
Hast Du mal geschaut, ob in der Variabel, in die Du mit idHTTP.Get('
url') den Inhalt der Webseite bekommen kannst, nicht auch im Fehlerfalle was drinne steht.
Hier im Beispiel müsste dann der Quelltext der Fehlerseite in slHTML zu finden sein.