Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   url existiert? (https://www.delphipraxis.net/61860-url-existiert.html)

mr.unbekannt 27. Jan 2006 12:38


url existiert?
 
hallo dpler!

ich suche eine Funktion mit der man gucken kann ob eine bestimmte url existiert, wenn zum beispiel der server down ist! bitte um shcnelle antwort! mein prog hängt sich imemr dnan auf! wenns geht mit idhttp oder urlmon!

mr.unbekannt

malo 27. Jan 2006 12:48

Re: url existiert?
 
Hier im Forum suchenPing

Skullschildi 27. Jan 2006 12:50

Re: url existiert?
 
Du könntest auch probieren mit idhttp
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fn: TFileName;
  fs : TFileStream;
begin
  fn := 'C:\download.htm';                    // Datei, in der gespeichert werden soll
  fs := TFileStream.Create(fn, fmCreate);     // Übertragungsleitung für die Datei
  try
    try
      IdHTTP1.Get('http://www.google.de', fs); // Herunterladen der Datei, mit der die Domain
                                               // verknüpft ist, über den Kanal fs
    except
    end;
  finally
    FreeAndNil(fs);                           //den Kanal freigeben
  end;
end;
eine datei von der URL runterzuladen. wenn das nicht klappt, ist der server down oder das Verzeichnis existiert nicht

marabu 27. Jan 2006 12:55

Re: url existiert?
 
Hi,

die Methode Head() prüft ohne Übertragung der Datei.

Grüße vom marabu

mr.unbekannt 27. Jan 2006 14:22

Re: url existiert?
 
ic h habe mir die 2 funktionne mal angeguckt (head und ping) ping is net so gut, weil könnte isch ja die ip ändern und head, hört sich zwar net shcelcht an, weiß aber net wie ich die anwenden soll, weil ich doch das mit einer if then anweisung mahcne muss, als wenn die url besteht dann weitermachen! bite um schnelle antwort!

marabu 27. Jan 2006 18:04

Re: url existiert?
 
Um auf alle Eventualitäten gefasst zu sein musst du diesen Code noch etwas ausbauen:

Delphi-Quellcode:
// uses WinInet, idHTTP;

function UrlExists(sUrl: String; bAllowRedirects: Boolean = false): Boolean;
begin
  with TidHTTP.Create(nil) do
  try
    HandleRedirects := bAllowRedirects;
    Head(sUrl);
    Result := Response.ResponseCode = HTTP_STATUS_OK;
  finally
    Free;
  end;
end;
marabu

mr.unbekannt 28. Jan 2006 00:53

Re: url existiert?
 
danke erstmal für die antwort, werde sie nacher mal testen, aber sieht gut aus!

mr.unbekannt 28. Jan 2006 10:15

Re: url existiert?
 
naja sieht gut aus, nur der sagt, wenn es nicht existiert readtmeout! und das muss ich noch irgendwie umlenken können!

mr.unbekannt 28. Jan 2006 10:32

Re: url existiert?
 
das mit dem readtimout kriege ich net hin, also wenn die siete net da ist, sagt er readtimeout!

maynard 28. Jan 2006 10:52

Re: url existiert?
 
Tach...

Die eigentliche Frage war ja, ob die URL tatsächlich existiert .. und das kannst kannst du nur über einen DNS - Sever herausfinden. Ping usw. ist Unsinn denn das funzt eben nicht wenn der Server down is!

MfG

mr.unbekannt 28. Jan 2006 11:05

Re: url existiert?
 
naja, die url funktioniert normalerweise, is nur die frage, ob sie gerad eonline ist! undd a hätte ich gerne ne funktion die mir entweder ja oder nein sagt!

marabu 28. Jan 2006 12:11

Re: url existiert?
 
Na gut - hier noch eine Variante, die auch socket Fehler kapselt:

Delphi-Quellcode:
function UrlCheck(sUrl: String; bAllowRedirects: Boolean = false): Integer;
begin
  with TidHTTP.Create(nil) do
  try
    try
      HandleRedirects := bAllowRedirects;
      Head(sUrl);
      Result := Response.ResponseCode;
    finally
      Free;
    end;
  except
      Result := GetLastError;
  end;
end;

begin
  if UrlCheck('http://www.delphipraxis.net', true) = 200 
    then ShowMessage('!')
    else ShowMessage('?');
end;
Grüße vom marabu

mr.unbekannt 28. Jan 2006 12:41

Re: url existiert?
 
nu sagt er "host not found" wenn es die addy net gibt, was ja ist, wenn der net onlie ist, aber der sollte ja nur das "?" zeigen und net diese fehelrmeldung! wo is der fehler? man muss den doch einfach sagen können, das er die fehlermeldung net rausgibt!

dahead 28. Jan 2006 13:07

Re: url existiert?
 
wenn ich dich richtig verstehe, musst du in marabus code den befehl "Result := GetLastError" auskommentieren (im try..except block).

mr.unbekannt 28. Jan 2006 13:30

Re: url existiert?
 
naja, ich will einfach eine routine, die mir sagt, ob eine url online ist, bzw. sie existiert oder nicht, ohne jegliche fehlermeldungen! und ohne ein prog, was ne weile hängt!

marabu 28. Jan 2006 14:07

Re: url existiert?
 
Also gegen das "ne Weile hängen" kannst du nicht wirklich was tun. Du musst dem Internet schon etwas Zeit lassen, um auf die Head-Anfrage zu antworten. Dass aber bei dir eine Fehlermeldung kommt, das liegt wohl eher daran, dass du in der IDE testest und in den Debug-Optionen das Anhalten bei exceptions eingestellt hast.

marabu

Privateer3000 21. Aug 2013 18:30

AW: url existiert?
 
Hallöchen,
ich will diesen etwas älteren Beitrag mal aufgreifen da ich ein ähnliches Problem habe.
Ich habe den Snippet von Marabu ausprobiert und Delphi meldet:
"Ungültiges Argument zum Codieren des Datums"
Was zum Henker hat das zu bedeuten?

Grüße

mjustin 21. Aug 2013 18:33

AW: url existiert?
 
Zitat:

Zitat von Privateer3000 (Beitrag 1225723)
Hallöchen,
Ich habe den Snippet von Marabu ausprobiert und Delphi meldet:
"Ungültiges Argument zum Codieren des Datums"
Was zum Henker hat das zu bedeuten?


In welcher Quelltext-Zeile tritt der Fehler auf? Welche Indy Version wird verwendet? (Aktuell ist 10.6)

Privateer3000 21. Aug 2013 19:48

AW: url existiert?
 
Der Compiler bleibt hier stehen:
Result := Response.ResponseCode;

Indy scheint etwas älter zu sein.
Geht das gleiche mit anderen Mitteln?

mjustin 21. Aug 2013 20:54

AW: url existiert?
 
Zitat:

Zitat von Privateer3000 (Beitrag 1225735)
Der Compiler bleibt hier stehen:
Result := Response.ResponseCode;

Indy scheint etwas älter zu sein.

Das läßt sich sehr schnell korrigieren:

* aktuelle Indy Version herunterladen (von http://indy.fulgan.com/ZIP/),
* nicht in der IDE als Packages installieren, sondern nur im Projekt den Suchpfad anpassen so dass er <Indy>\Lib\Core, <Indy>\Lib\Protocols und <Indy>\Lib\System enthält.

Privateer3000 22. Aug 2013 09:03

AW: url existiert?
 
Die Indy war bis jetzt 9.00.10, hab jetzt die aktuelle installiert.
Den Suchpfad habe ich unter Projekte/Optionen/Verzeichnisse/Bedingungen/Suchpfad
eingepasst.
Muss ich nun die Kompos in die IDE integerieren oder wie muss ich mir das vorstellen?

Privateer3000 22. Aug 2013 09:37

AW: url existiert?
 
Kann das sein, wenn man statt den direkten Strings den Inhalt
eines Edit Feldes den String umwandeln muss?
Kommt es dadurch zum Fehler?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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 by Thomas Breitkreuz