AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

file exist indy 9

Ein Thema von ferby · begonnen am 17. Nov 2007 · letzter Beitrag vom 24. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

file exist indy 9

  Alt 17. Nov 2007, 12:24
Hallo,

Ich habe folgende Aufgabenstellung bekommen:
In einer Text Datei stehen ca 200 Urls zu pdf Files total verstreut im Internet auf diversen Webseiten.
Diese PDF sind zwischen 100-5000KB groß.
Die URL der PDF ändert sich ab und zu.

Meine Aufgabe:
Ich soll überprüfen, ob die URL existiert, also nicht die PDF Downloaden, sondern einfach nur gucken ob es das
PDF gibt oder ob ein 404 Fehler ausgelößt wird...

Kann mir jemand sagen wie man das am besten bewerkstelligt?
Ich wüßte nur wie das mit INDY 9 hinhaut, das man einfach versucht die Datei herunterzuladen und wenns nicht geht,
kommt eine error, aber wenn es dann doch geht, wird die Datei herunter geladen, und das will ich ja nicht..


PS: Optimal wäre eine Lösung mit INDY 9
  Mit Zitat antworten Zitat
hinnack

Registriert seit: 18. Nov 2004
22 Beiträge
 
#2

Re: file exist indy 9

  Alt 17. Nov 2007, 15:49
nimm die HEAD methode von INDY anstelle von GET
ein HEAD gibt nur Infos zur URL (also auch 404) zurück, statt die ganze Datei...

Gruss

Hinnack
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: file exist indy 9

  Alt 17. Nov 2007, 16:25
werd ich mal ausprobieren sobald ich zeit hab, thx
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: file exist indy 9

  Alt 21. Nov 2007, 13:18
Hallo,

Also ganz kapier ichs nicht....
Head ist ja eine prozedur, keine funktion...

Habs mit

Delphi-Quellcode:
procedure LinkExist(link: string);
begin
  showmessage(IdHTTP.Head(Link));
end;
mal probiert, aber da kommt der Fehler


[Fehler] Links.pas(36): Inkompatible Typen: 'String' und 'procedure, untyped pointer or untyped parameter' nehm mal stark an das liegt daran das Head eine Prozedur ist und keine Funktion.

Wie meinst du das

Zitat:
ein HEAD gibt nur Infos zur URL (also auch 404) zurück
?
  Mit Zitat antworten Zitat
hinnack

Registriert seit: 18. Nov 2004
22 Beiträge
 
#5

Re: file exist indy 9

  Alt 21. Nov 2007, 13:39
Du rufst die Head Procedure auf und prüfst danach auf ResponseCode=200
Du kannst auch noch auf xxx.Response.xxx z.B ContentType zugreifen
Jedoch das Dokument selbst wird nicht heruntergeladen - das geht nur mit GET.

Delphi-Quellcode:
function LinkExists(link: string) : boolean;
begin
// IdHTTP Object erstellen etc. FollowRedirect, Cookies etc. einstellen
  try
     IdHTTP.Head(Link);
  except
  end;
  Result := (IdHTTP.ResponseCode = 200)
end;

Mit Ethereal kann man sich den Unterschied sehr gut anschauen (http://www.ethereal.com)

Gruss

Hinnack
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: file exist indy 9

  Alt 21. Nov 2007, 13:50
Hallo,

danke so gehts.

Etwas stört mich noch,
und zwar wenn ich die Exe mit Delphi starte, dann bricht die Exe immer ab, wenn eine Exception ausgelößt wird.

Also hier zb

Delphi-Quellcode:
try
     IdHTTP.Head(Link);
  except
  end;
Da hier immer eine Exception ausgelößt wird, wenn die URL nicht existiert, nervt das.

Kann ich irgendwo einstellen, das die Exe normal weiterennen soll wenn eine Exeption auftritt?


EDIT:
Ich suche die Einstellung im Deubuger wo ich austellen kann das der Debugger bei einer Exception was macht,
finde diese Einstellung aber nicht
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: file exist indy 9

  Alt 21. Nov 2007, 13:56
Tools - Debugger-Optionen - Sprachexceptions, da den Haken bei "Bei Delphi-Exceptions stoppen" rausnehmen (zumindest unter Delphi 5)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: file exist indy 9

  Alt 21. Nov 2007, 14:00
Hello,

ja grad auch gefunden, hab die ganze Zeit unter Projekt --> Optionen gesucht.

super, jetzt funktioniert alles wie ich mir das Vorstelle
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: file exist indy 9

  Alt 21. Nov 2007, 14:03
Oh, mir ist aufgefallen, wenn ich mehrere Links hintereinander prüfe,
und einer davon stimmt nicht, dann wird trotzdem true zurückgeliefert....

hab den code so verändert und jetzt funktionierts bei mir immer


Delphi-Quellcode:
function TLink.LinkExist(link: string): boolean;
begin
  Result:=true;

  try
    IdHTTP.Head(Link);
  except
    result:=false;
  end;
end;

ist zwar nicht die feine englische art, aber nachdem immer die exception ausgelößt wird wenn es den link nicht gibt,
funzt es so
  Mit Zitat antworten Zitat
hinnack

Registriert seit: 18. Nov 2004
22 Beiträge
 
#10

Re: file exist indy 9

  Alt 21. Nov 2007, 16:42
man kann nach jedem Request auch
IdHTTP.Request.Clear
aufrufen, dann wird auch IdHTTP.ResponseCode zurückgesetzt.

Gruss

hg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 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