Ich verwende TNMHTTP in Delphi, um den Code von einer Webseite abzurufen. Der Code ist relativ einfach:
NMHTTP1 := TNMHTTP.Create(Self);
NMHTTP1.InputFileMode := FALSE;
NMHTTP1.OutputFileMode := FALSE;
NMHTTP1.ReportLevel := Status_Basic;
NMHTTP1.TimeOut := 3000;
URL := 'http://www....';
NMHTTP1.Get(URL);
S := NMHTTP1.Body;
Ich fange Ausnahmen in einem try/except-Block ab, aber das ist nicht das Problem.
Das Problem ist, dass bei der Ausführung der NMHTTP1.Get-Methode, wenn die URL eine Weiterleitung ist, diese Methode nicht zurückkehrt und das Programm hängen bleibt. Dies ist trotz der Tatsache, dass ich eine Zeitüberschreitung von 3000 Sekunden in setzen.
Ich sehe also drei Möglichkeiten, dieses Problem zu lösen (in der Reihenfolge, dass es für mich am einfachsten bis am schwierigsten ist, mein Programm zu ändern):
-
Tun Sie alles, was nötig ist, damit die Methode NMHTTP1.Get antwortet.
-
Führen Sie vor der NMHTTP1.Get-Anweisung eine Art Prüfung durch, um festzustellen, ob die URL eine Weiterleitung ist, und ermitteln Sie die URL, zu der die Weiterleitung erfolgt.
-
Verwenden Sie eine andere Methode, um eine Webseite mit Delphi zu erhalten. Als ich dies schrieb, verwendete ich Delphi 4 und hatte kein Indy. Jetzt habe ich Delphi 2009, also wäre ich bereit, etwas zu verwenden, das darin funktioniert (vielleicht INDY), wenn eine einfache Antwort #1 oder #2 nicht verfügbar ist.
Ich würde gerne eine Antwort von jemandem bekommen, der für mich arbeitet. Vielen Dank im Voraus.