Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Prüfen ob eine URL erreichbar ist (kein Download) (https://www.delphipraxis.net/8700-pruefen-ob-eine-url-erreichbar-ist-kein-download.html)

wk_one 10. Sep 2003 14:42


Prüfen ob eine URL erreichbar ist (kein Download)
 
Hallo,

ich möchte ein kleines Tool bauen das eine Liste von Internetlinks auf Erreichbarkeit prüft.
Links wie
http://www.google.de
oder
http://www.irgeneinwebserver.de/unte.../textdatei.txt

Gibt es eine Funktion der ich den Link übergebe und diese mir zurückgibt ob das Ziel existiert bzw. erreichbar ist?

sakura 10. Sep 2003 14:49

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Statt dem kompletten GET kannst Du eine HEAD Anforderung auf die URL ausführen (Indy Kompos tun dies). Damit wird nur der Header vom Server zurückgeliefert und gemeldet, ob die Seite existiert, vorschoben ist, etc...

...:cat:...

Christian Seehase 10. Sep 2003 14:52

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Moin wk_one,

schau Dir doch mal die API Funktion InternetOpenUrl an.
Vielleicht hilft Dir ja die schon weiter.

wk_one 11. Sep 2003 09:17

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Zitat:

Zitat von sakura
Statt dem kompletten GET kannst Du eine HEAD Anforderung auf die URL ausführen (Indy Kompos tun dies). Damit wird nur der Header vom Server zurückgeliefert und gemeldet, ob die Seite existiert, vorschoben ist, etc...

...:cat:...


Habe beschlossen Sakuras Variante zu probieren.
ich versuche das ganze mal mit get. Das funktioniert auch solange es die URL gibt.
Hier der Code:

Code:
try
    IdHTTP1.Get(edit1.text, responseStream);
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
  end;//try
edit1 ist ein eingabefeld in dem die URL steht.
Wenn nun eine URL eingegeben wird die es nicht gibt, dann bricht das Programm ab und bringt eine Fehlermeldung.
Das soll es aber nicht. In Fehlerfällen soll es eine Meldung in die Variable ausgabe schreiben.

Wie schaffe ich es das Fenster mit der Fehlermeldung zu unterdrücken?
Irgendwelche Tipps?

Nalincah 11. Sep 2003 09:23

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Warum sagt der bei mir "Undefinierter Bezeichner: 'responseStream'??
Hab neues Projekt gemacht mit IdHTTP1, Edit1 und Button1.In Button1 hab ich deinen Source drin:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    IdHTTP1.Get(edit1.text, responseStream);
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
  end;//try
end;

wk_one 11. Sep 2003 09:37

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Zitat:

Zitat von General2003
Warum sagt der bei mir "Undefinierter Bezeichner: 'responseStream'??
Hab neues Projekt gemacht mit IdHTTP1, Edit1 und Button1.In Button1 hab ich deinen Source drin:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    IdHTTP1.Get(edit1.text, responseStream);
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
  end;//try
end;

Hab ja nur einen Auszug aus meinem Code gepostet.
So sieht mein code aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  responseStream: TFileStream;
  ausgabe:String;
begin
  responseStream := TFileStream.Create(edit2.text, fmCreate);
  try
    IdHTTP1.Get(edit1.text, responseStream);
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
  end;//try
end;
edit2 ist ein weiteres Textfeld in dem Pfad+Dateiname angegeben wird
hab das aus nem Tutorial

sakura 11. Sep 2003 09:40

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Benutze mal anstatt von IdHTTP1.Get die Anweisung IdHTTP1.Head. Damit werden nur die Header geholt, Get holt auch den Inhalt, aber den wolltest Du doch nicht. ;-)

...:cat:...

wk_one 11. Sep 2003 10:14

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Zitat:

Zitat von sakura
Benutze mal anstatt von IdHTTP1.Get die Anweisung IdHTTP1.Head. Damit werden nur die Header geholt, Get holt auch den Inhalt, aber den wolltest Du doch nicht. ;-)

...:cat:...

:D
Stimmt.

Ok, ich hab das so gemacht:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  ausgabe:String;
begin
  try
    IdHTTP1.Head(edit3.text);
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
  end;//try
  if (Length(ausgabe)<1) then
    ausgabe:='OK, alles klar'+#13#10 + IdHTTP1.ResponseText;
  ShowMessage(ausgabe);
end;
Das funktioniert auch. Aber leider passiert hier bei Eingabe einer nicht existierender URL das selbe. Ich bekomme ein Eine Fehlermeldung vom System.

Hmmm.. vielleicht sollte ich mal die Anwendung ausserhalb der Entwicklungsumgebung starten.

sakura 11. Sep 2003 10:19

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
Du hast einen Exception-Handler geschrieben, der nur auf den Fehlertyp EIdHTTPProtocolException reagiert. Andere gehen ungehindert durch.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  ausgabe:String;
begin
  try
    IdHTTP1.Head('http://www.nichtda.org/tot.de');
  except
    on EIdHTTPProtocolException do
      ausgabe:='Fehler!'+#13#10 + IdHTTP1.ResponseText;
    [color=#ff0000]// die anderen Fehler
    on E: Exception do
      ausgabe:='Auch ein Fehler (' + E.ClassName + ')!'+#13#10 + E.Message;[/color]
  end;//try
  if (Length(ausgabe)<1) then
    ausgabe:='OK, alles klar'+#13#10 + IdHTTP1.ResponseText;
  ShowMessage(ausgabe);
end;
...:cat:...

StarFire 11. Sep 2003 10:23

Re: Prüfen ob eine URL erreichbar ist (kein Download)
 
@ wk_one
Ich liebe Cross-Postings, bei denen man Tips von anderen Foren als eigene Ideen verkauft

StarFire


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Seite 1 von 2  1 2      

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