Entwickler-Ecke
Internet / Netzwerk - URL auf erreichbarkeit testen
G-man - Di 17.02.04 16:06
Titel: URL auf erreichbarkeit testen
Moin,
weiß jemand, wie man eine URL auf erreichbarkeit testen kann (am besten mit WinIet, muss aber nicht sein).
Mit Java gab es da einfach den Typ URL, der dann die Verbindung aufgebaut hat und falls das nicht klappte konnte man dann per exeption halt heraus bekommen, ob die URL zu erreichen war.
Chatfix - Di 17.02.04 16:13
mach doch einfach einen Ping auf die URL ;)
G-man - Di 17.02.04 16:27
Und wie pinge ich die URL mit Delphi an?
Martin77 - Di 17.02.04 16:33
Machs mit den Indys,
Delphi-Quelltext
1:
| IdHttp1.get('dieURL'); |
Ist meiner Meinung nach am einfachsten, kannste dich natürlich auch mit der API auseinander setzen.
Glaube bei den Indys war auch eine "CheckHost" Komponente bei, weiss aber nicht genau , oder ob ich mich verlesen habe
Gruß Martin
G-man - Di 17.02.04 17:30
Mich würden halt auch untergeordnete Seiten interessieren. Wenn das aber aus irgendeinem Grund nicht gehen sollte, muss ich wohl mit der vorgeschlagenen Lösung vorlieb nehmen.
Martin77 - Di 17.02.04 17:40
hier wirft jemand was durcheinander. 1. Du kannst keine Webseite anpingen. Du kannst nur einen Host anpingen -> das das zufällig nen Webserver draufläuft ist ja schön. 2. Unterseiten der Seite oder SubDomain, weil unterseiten anpingen ist ja nicht möglich.
Folgendes Szenario: Dein Hoster macht ein Update des Webservers. in dem Moment ist deine Webseite(!!!) nicht erreichbar, der DOmainname würde allerdingsauf einen Ping antworten.
Da du sagst das du auch gerne auf "unterseiten" zugreifen willst folgere ich mal richtig daraus das die eine Webseite meinst, und damit ist der Ping nicht möglich. Also musste die Seite herunterladen -> Indy oder ähnliche Kompos.
Gruß Martin
P.S. Wehe jetzt kommt einer und sagt ich kann die Subdomain auch auf nen Unterordner legen: Das stimtm schon trotzdem führt der aufgelöste Hostname zur IP Adresse der eigentlich Domain.
G-man - Di 17.02.04 18:04
Dann wüsste ich aber gerne, wie das der Java-URL typ macht, ohne eine Datei zu Downloaden.
Martin77 - Di 17.02.04 18:11
Ich würde sagen auch der läd die Seite herunter, oder er versucht nen Connect auf Port 80 was für diesen Zweck ausreichend ist. Wenn es ein normaler wäre. hätteste auch eher nen Typ "Hostname" anstelle von "URL"
Gruß Martin
P.S.
Wer sagt dir das der Typ URL keine Seite herunterläd? ich kann dir auch eine Klasse machen, die intern die Datei downloadet und dir nix davon mitteilt, aber daraufhin dir mitteilt ob der Webserver erreichbar ist oder nicht.
G-man - Di 17.02.04 18:33
Dann ziehst du die Datei wohl runter, uns löscht sie danach wieder, oder wie würdest du es machen?
Martin77 - Di 17.02.04 18:39
Über die Get Methode bekommst du den Quelltext der Webseite, zur not einen leeren String, aber du bekommst halt auch Exceptions je nachdem was passiert ist.
Martin
G-man - Di 17.02.04 18:41
Kannst du das mal mit einem Quelltextausschnitt demonstrieren?.
Martin77 - Di 17.02.04 19:02
beispiel steht zwar oben schon, aber hier nochmal:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var sTemp: string; begin try sTemp:= IdHTTP1.Get('http://www.delphi-forum.de'); except on E: Exception do ShowMessage('URL nicht erreichbar'); end; end; |
Wegen der Exception musste mal gucken, ob du unterschieden willst was genau schiefgegangen ist, oder ob dir die Info reicht "irgendwas" ist schief gegangen.
Gruß Martin
G-man - Di 24.02.04 17:23
Ich habe eine alternative Lösung gefunden:
(mit der Unit WinINET) QueryInfo und dann mit LastError den 404 Error abfangen, falls einer existiert.
Martin77 - Di 24.02.04 20:26
bedenke: 404 ist nru der Fehler wenn die Seite nicht existiert, es können ja auch andere Fehler auftreten. z.B. nen Timeout wenn der Webserver nicht antwortet,....
DeCodeGuru - Di 24.02.04 20:51
genau so eine Funktion habe ich vor ca. 20 Minuten benötigt und auf meiner HD gefunden. Hier der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| function CheckAvailability(URL: String): Boolean; var Session, thefile: hInternet; index,CodeLength: cardinal; Code: array[1..20] of Char; res: PChar; begin Result := False; Session := InternetOpen('InetURL:/1.0',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0); if Assigned(session) then begin thefile := InternetOpenUrl(session, pchar(URL), nil, 0, INTERNET_FLAG_RELOAD,0); Index := 0; CodeLength := 10; HttpQueryInfo(thefile, HTTP_QUERY_STATUS_CODE, @Code, CodeLength, Index); res:= pchar(@Code); if res = '200' then Result := True;
if Assigned(thefile) then InternetCloseHandle(thefile); end; InternetCloseHandle(session); end; |
Hoffe, dass der dir hilft. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!