![]() |
Indy 10: Closed Gracefully...mal wieder
Hi,
möchte gerne die letzte redirect URL erfahren. Das Ganze funktioniert so auch, aber nur 1x, dann kommt ne "Connection Closed Gracefully" Exception und er springt zu Except. Weiß da jemand ne Lösung, hab jetzt schon ziemlich viel versucht.
Delphi-Quellcode:
Try
frmMain.IdHTTP1.Head(frmMain.strItemLink); Result := strActualHttpLink; Except Result := frmMain.strItemLink; End;
Delphi-Quellcode:
procedure TfrmMain.IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean; var VMethod: TIdHTTPMethod); begin strActualHttpLink := dest; end; |
Re: Indy 10: Closed Gracefully...mal wieder
Die Macher der Indies haben ein etwas "unkonventionelles" Verständnis von Exceptions: Statusmeldungen, wie eben auch die, dass eine Verbindung geschlossen wurde, werden per Exceptions propagiert. Du musst halt entsprechend try-except-Blöcke bauen und beachten, dass in der Standardeinstellung der IDE beim Debuggen Exceptions trotz Behandlung angezeigt werden.
|
Re: Indy 10: Closed Gracefully...mal wieder
Jo weiß schon, hab schon die anderen threads durchgeschaut, aber wie bekomm ich folgenden Code zum laufen? Der funktioniert immer nur 1x und dann kommt Connection blabla closed. Habs schon mit disconnect, connect, sockets probiert, alles hat nichts geholfen, nur wenn ich die Anwendung neustarte gehts wieder, einmal.
Delphi-Quellcode:
Button1.Enabled := False;
strActualHttpLink := ''; IdHTTP1.Head('http://feeds.feedburner.com/foxsports/RSS/headlines?m=2749'); Button1.Enabled := True; |
Re: Indy 10: Closed Gracefully...mal wieder
So ginge es, auch wenns nicht ganz so ideal ist:
Delphi-Quellcode:
// ....
public LastURL: String; end; // .... uses IdException; // .... procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: string; var NumRedirect: Integer; var Handled: Boolean; var VMethod: TIdHTTPMethod); begin LastURL := dest; Handled := false; end; procedure TForm1.Button1Click(Sender: TObject); var CurURL : String; SomeError : boolean; begin Button1.Enabled := false; LastURL := 'http://feeds.feedburner.com/foxsports/RSS/headlines?m=2749'; SomeError := false; repeat Try CurURL := LastURL; IdHTTP1.Head(CurURL); Except On E: EIdConnClosedGracefully do begin SomeError := false; end; On E: EIdHTTPProtocolException do begin SomeError := E.ReplyErrorCode <> 302; end; On E: EIdException do begin SomeError := true; end; else raise; End; until SomeError or (LastURL = CurURL); Button1.Enabled := true; end; |
Re: Indy 10: Closed Gracefully...mal wieder
Danke dass du dir jetzt die Mühe gemacht hast, aber hab schon die ICS Komponenten installiert und da hat folgender Code schon beim ersten Mal problemlos funktioniert, wie es eigentlich auch sein sollte bei so ner simplen Sache.
Delphi-Quellcode:
Auch Danke an Luckie der mich auf ICS verwiesen hat.
frmMain.HttpCli1.URL := frmMain.strItemLink;
frmMain.HttpCli1.Head; Result := frmMain.HTTPCli1.Location; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz