![]() |
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 |
Re: url existiert?
|
Re: url existiert?
Du könntest auch probieren mit idhttp
Delphi-Quellcode:
eine datei von der URL runterzuladen. wenn das nicht klappt, ist der server down oder das Verzeichnis existiert nicht
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; |
Re: url existiert?
Hi,
die Methode Head() prüft ohne Übertragung der Datei. Grüße vom marabu |
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!
|
Re: url existiert?
Um auf alle Eventualitäten gefasst zu sein musst du diesen Code noch etwas ausbauen:
Delphi-Quellcode:
marabu
// 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; |
Re: url existiert?
danke erstmal für die antwort, werde sie nacher mal testen, aber sieht gut aus!
|
Re: url existiert?
naja sieht gut aus, nur der sagt, wenn es nicht existiert readtmeout! und das muss ich noch irgendwie umlenken können!
|
Re: url existiert?
das mit dem readtimout kriege ich net hin, also wenn die siete net da ist, sagt er readtimeout!
|
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 |
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!
|
Re: url existiert?
Na gut - hier noch eine Variante, die auch socket Fehler kapselt:
Delphi-Quellcode:
Grüße vom marabu
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; |
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!
|
Re: url existiert?
wenn ich dich richtig verstehe, musst du in marabus code den befehl "Result := GetLastError" auskommentieren (im try..except block).
|
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!
|
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 |
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 |
AW: url existiert?
Zitat:
In welcher Quelltext-Zeile tritt der Fehler auf? Welche Indy Version wird verwendet? (Aktuell ist 10.6) |
AW: url existiert?
Der Compiler bleibt hier stehen:
Result := Response.ResponseCode; Indy scheint etwas älter zu sein. Geht das gleiche mit anderen Mitteln? |
AW: url existiert?
Zitat:
* aktuelle Indy Version herunterladen (von ![]() * 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. |
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? |
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