# Schnelles checken ob Bilddateien auf URL verfuegbar sind?



## sirbender (15. Apr 2008)

Hi,

Ich will ein schnelles checken haben, das prueft ob Bilddateien auf bestimmter URL wirklich verfuegbar sind und ich sie theoretisch runterladen koennte.

boolean checkURL("http://xyz.com/test.jpg")

dabei sollte:

1. der Server auf den ich zugreife moeglichst wenig belastet werden.
2. Nicht die Bilddatei runtergeladen werden sondern nur gecheckt werden ob dies moeglich ist.
3. Ich will Java SE Libs verwenden und keine Frameworks wie HtmlUnit, etc.

Kann mir jemand helfen?
sb


----------



## sliwalker (15. Apr 2008)

Hi,

hast Du FTP Zugriff?
-- Dann hol Dir die Dateiliste und prüfe ob deine Datei Dabei ist.

Ist DirectoryListing aktiviert?
Dann hol Dir den Body der Seite des Listings und parse ob Deine datei dabei ist.


Wen beides nicht, kommst Du um einen vollen GET Befehl nicht drumherum, der auch das Bild läd.

greetz
SLi


----------



## Guest (15. Apr 2008)

sliwalker hat gesagt.:
			
		

> Hi,
> 
> hast Du FTP Zugriff?
> -- Dann hol Dir die Dateiliste und prüfe ob deine Datei Dabei ist.
> ...


----------



## maki (15. Apr 2008)

Wenn der Server die HEAD methode zulässt, wäre das ein Weg, ist aber unüblich.

Ansonsten fällt mir nix ein.

Warum willst du eigentlich keine fertigen Frameworks verwenden?


----------



## Guest (15. Apr 2008)

maki hat gesagt.:
			
		

> Wenn der Server die HEAD methode zulässt, wäre das ein Weg, ist aber unüblich.
> 
> Ansonsten fällt mir nix ein.
> 
> Warum willst du eigentlich keine fertigen Frameworks verwenden?



Nuja gegen Frameworks hab ich eigentlich nichts. Aber handelt es sich um ca. jeweils 10 Bilddateien die ich auf ihre Verfuegbarkeit checken will - derweil muss der User daeumchendrehen?

Bei langsamer Serveranbindung bzw. Rechneranbindung ans Internet kann das ewig dauern. Vielleicht kann ich ja mit GET einfach runterladen, dann aber abbrechen wenn ein paar Byte fliessen? Geht so ein abbrechen? Bring das den Server durcheinander?

Mich wuerden Java-Codebeispiele eines solchen Vorzeitigen Abbruchs intressieren.


----------



## Escorter (15. Apr 2008)

Das abbrechen sollte den Server nicht durch einanderbringen - wie oft wird beim browser abgebrochen werden.
Lass die get Methode laufen und überwache den outputstream in nem eigenem thread. musst mal schauen ob man damit was machen kann. weiß nicht ob es geht aber das wäre das was mir auf anhieb einfällt.

Gruß,
Esco


----------



## sliwalker (16. Apr 2008)

Hoi,

set den GET-befehl ab und guck in der Antwort nach dem Attribut Content-length. Entweder weißt Du vorher wie groß es ist oder wenn nicht, mss vorher wieviel ein 404 auf deinem Server als Content-Legth hat. Wenn der Wert ungleich ist, ist das Bild wohl da und Du kannst sofort die Verbindung wieder abbrechen.

Das vorgehen ist aber so speziell, dass ich es mir selber schreiben würde und nicht die Klassen von apache verwenden würde, da man die sowieso anpassen müsste. Ohne Authentifizierung und nur ein simpler GET-Befehl ist da schneller selbst geschrieben.

greetz
SLi


----------



## Triebi (16. Apr 2008)

sirbender hat gesagt.:
			
		

> Ich will ein schnelles checken haben, das prueft ob Bilddateien auf bestimmter URL wirklich verfuegbar sind und ich sie theoretisch runterladen koennte.


Entweder übersehe ich das Problem, oder du HttpURLConnection#getResponseCode(). http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html#getResponseCode()
200 -> Bild ist da
404 -> ist es nicht.
Die restlichen Statuscodes müssen auch irgendwo einsortiert werden.



> Nicht die Bilddatei runtergeladen werden sondern nur gecheckt werden ob dies moeglich ist.


Heruntergeladen wird AFAIK erst, wenn über den InputStream gelesen wird.



> Geht so ein abbrechen? Bring das den Server durcheinander?


Kannst ja mal disconnect() versuchen.
Allerdings ist es doch nicht deine Schuld, wenn in Asien ein Unterseekabel reisst, nur weil in China ein Sack Reis umfällt.


----------

