3 Stimmen

Wie kann ich die TNMHTTP Get-Methode dazu bringen, auf einen Redirect zu antworten?

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):

  1. Tun Sie alles, was nötig ist, damit die Methode NMHTTP1.Get antwortet.

  2. 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.

  3. 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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X