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 das hier weiter wenn du nur wissen willst, ob es eine gültige URL ist.
Des Weiteren gibt es (wenn ich mich jetzt nicht täusche) auch in der WinInet bereits eine IsValidUrl Function. 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: http://indy.fulgan.com/SSL/ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 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