AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Prüfen ob eine URL erreichbar ist (kein Download)
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von wk_one · begonnen am 10. Sep 2003 · letzter Beitrag vom 23. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
wk_one

Registriert seit: 19. Mai 2003
26 Beiträge
 
Delphi 7 Professional
 
#1

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

  Alt 10. Sep 2003, 15:42
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?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 10. Sep 2003, 15:49
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...

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 10. Sep 2003, 15:52
Moin wk_one,

schau Dir doch mal die API Funktion InternetOpenUrl an.
Vielleicht hilft Dir ja die schon weiter.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
wk_one

Registriert seit: 19. Mai 2003
26 Beiträge
 
Delphi 7 Professional
 
#4

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

  Alt 11. Sep 2003, 10:17
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...

......

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?
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#5

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

  Alt 11. Sep 2003, 10:23
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;
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
wk_one

Registriert seit: 19. Mai 2003
26 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 11. Sep 2003, 10:37
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 11. Sep 2003, 10:40
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.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
wk_one

Registriert seit: 19. Mai 2003
26 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 11. Sep 2003, 11:14
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.

......

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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 11. Sep 2003, 11:19
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;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
StarFire

Registriert seit: 16. Feb 2003
11 Beiträge
 
#10

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

  Alt 11. Sep 2003, 11:23
@ wk_one
Ich liebe Cross-Postings, bei denen man Tips von anderen Foren als eigene Ideen verkauft

StarFire
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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