Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10: Closed Gracefully...mal wieder (https://www.delphipraxis.net/67303-indy-10-closed-gracefully-mal-wieder.html)

DieHardMan 12. Apr 2006 17:45


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;

Chewie 12. Apr 2006 19:03

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.

DieHardMan 12. Apr 2006 21:13

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;

scp 12. Apr 2006 23:30

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;

DieHardMan 13. Apr 2006 00:59

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:
  frmMain.HttpCli1.URL := frmMain.strItemLink;
  frmMain.HttpCli1.Head;
  Result := frmMain.HTTPCli1.Location;
Auch Danke an Luckie der mich auf ICS verwiesen hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz