Autor |
Beitrag |
G-man
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Di 17.02.04 16:06
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.
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Di 17.02.04 16:13
mach doch einfach einen Ping auf die URL 
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
G-man 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Di 17.02.04 16:27
Und wie pinge ich die URL mit Delphi an?
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Di 17.02.04 16:35
Z.B. mit der DF-Suche...
www.delphi-forum.de/...4&highlight=ping
Statt der IP, einfach die URL angeben...
Ich glaube aber damit kannst du nur die domain anpingen, nicht aber untergeordnete seiten...
vielleicht hat ja noch jmd eine bessere möglichkeit
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
G-man 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: 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.
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Di 17.02.04 18:04
Dann wüsste ich aber gerne, wie das der Java-URL typ macht, ohne eine Datei zu Downloaden.
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: 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?
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Di 17.02.04 18:41
Kannst du das mal mit einem Quelltextausschnitt demonstrieren?.
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: 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.
_________________ ...To err is human, but to really foul things up requires a computer.
|
|
Martin77
      
Beiträge: 282
XP Prof
D6 Prof, D7 Personal, D7 Enterprise, D8 personal
|
Verfasst: 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
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: 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. 
_________________ Viele Grüße
Jakob
|
|
|