![]() |
IsValidURL: Testen, ob URL über HTTP erreichbar ist
Hallo! Ich möchte in Delphi XE2 auf möglichst einfache und schnelle Weise testen, ob ein String eine über HTTP erreichbare URL darstellt: Ich habe dafür folgenden Code geschrieben:
Delphi-Quellcode:
Oder gibt es eine einfachere/schnellere Möglichkeit?
uses ... IdHTTP;
function IsValidURL(const AURL: string): Boolean; var ThisIdHTTP: TIdHTTP; strDummy: string; begin Result := True; ThisIdHTTP := TIdHTTP.Create(nil); try try strDummy := ThisIdHTTP.Get(AURL); except Result := False; end; finally ThisIdHTTP.Free; end; end; procedure TForm1.btn1Click(Sender: TObject); begin if IsValidURL(edt1.Text) then ShowMessage('This URL is valid') else ShowMessage('This URL is NOT valid'); end; Edit 27.03.2013 10:43: Eigentlich sollte die Funktion IsURLReachable heißen, denn das ist genau das, was sie tut: Prüfen, ob die URL über HTTP erreichbar ist. |
AW: IsValidURL: Testen, ob URL über HTTP erreichbar ist
Vielleicht hilft dir
![]() Des Weiteren gibt es (wenn ich mich jetzt nicht täusche) auch in der WinInet bereits eine ![]() Schau es dir einfach mal an. |
AW: IsValidURL: Testen, ob URL über HTTP erreichbar ist
Danke.
|
AW: IsValidURL: Testen, ob URL über HTTP erreichbar ist
Schneller als Get
Delphi-Quellcode:
ist Head
strDummy := ThisIdHTTP.Get(AURL);
Delphi-Quellcode:
strDummy := ThisIdHTTP.Head(AURL);
Damit braucht das Programm nur Indy, das Winsock benutzt. (Wininet ist nur ein Aufsatz auf Winsock, dessen Resourcen man durch Verwendung von Indy einspart.) |
AW: IsValidURL: Testen, ob URL über HTTP erreichbar ist
Zitat:
Mit
Delphi-Quellcode:
meldet der Compiler:
strDummy := ThisIdHTTP.Head(AURL);
E2010 Inkompatible Typen: 'string' und 'procedure, untyped pointer or untyped parameter' Mit
Delphi-Quellcode:
allein (ohne Zuweisung zu einem String) wird kein Fehler ausgegeben.
ThisIdHTTP.Head(AURL);
|
AW: IsValidURL: Testen, ob URL über HTTP erreichbar ist
Der Vollständigkeit halber hier noch die dazu analoge Version für HTTPS-URLs:
Delphi-Quellcode:
Edit: Die beiden DLLs müssen sich noch im Suchpfad (Programmverzeichnis) befinden:
uses ... IdHTTP, IdSSLOpenSSL;
function IsHTTPSURLReachable(const AURL: string): Boolean; var lHTTP: TIdHTTP; lIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin Result := True; lHTTP := TIdHTTP.Create(nil); lIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try try lHTTP.IOHandler := lIOHandler; lHTTP.HandleRedirects := True; lHTTP.Head(AURL); except Result := False; end; finally lHTTP.Free; lIOHandler.Free; end; end; ssleay32.dll libeay32.dll Die neuesten Versionen der DLLs kriegt ihr hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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-2025 by Thomas Breitkreuz