Bilder herunterladen

dimsid

Grünschnabel
hallo,

wie kann mit Java bilder von einem webserver herunterladen. ich brauche eine sichere methode, d.h. ich soll den status code wie z.b. 404 usw. abfragen können.
 
Hi,

ich würde es so machen (das Herunterladen):

Code:
URL bild = new URL("http://webserver.de/bild.jpg");
InputStream in = bild.openStream();

byte[] buffer = new byte[8192];

FileOutputStream out = new FileOutputStream(new File("bild.jpg"));

int _tmp = 0;			        			      
			     
while((_tmp = stream.read(buffer)) > 0){
	out.write(buffer, 0 , _tmp);
}

out.close();
 
Hi,

ich würde es so machen (das Herunterladen):

Code:
URL bild = new URL("http://webserver.de/bild.jpg");
InputStream in = bild.openStream();

byte[] buffer = new byte[8192];

FileOutputStream out = new FileOutputStream(new File("bild.jpg"));

int _tmp = 0;			        			      
			     
while((_tmp = stream.read(buffer)) > 0){
	out.write(buffer, 0 , _tmp);
}

out.close();


kann ich mit dieser methode die "File not found" oder "Connection Failure" abfangen ?
 
Du brauchst einfache GET Requests. Von daher lohnt sicher ein Blick auf Commons HTTP.

Gruß
Ollie

Danke, ich habe mich für apache.Commons entschieden. Damit habe ich aber ein weiteres Problem. Kommt in der URL ein Leerzeichen oder Umlaut vor, wird folgenden Exception geworfen.

Code:
java.lang.IllegalArgumentException: Invalid uri 'http://www.example.com/umlaut_ü/': escaped absolute path not valid

ich habe mir schon den wolf gesucht, aber ich finde keine Lösung
 
das problem mit den umlauten habe ich gelöst.

auf folgende weise kann man sie urlencoden:

java.net.URI.create("URL_MIT_UMLAUT").toASCIIString()

Was noch bleibt, ist das problem mit den leerzeichen, irgendwie werden die nicht encodet.
Die URL_MIT_UMLAUT darf keien leerzeichen enthalten, sonst wird eine java.lang.IllegalArgumentException von java.net.URI.create geworfen.

wenn jemand eine idee hat, nur zu... mir läuft die zeit davon
 
das problem mit den umlauten habe ich gelöst.
Die URL_MIT_UMLAUT darf keien leerzeichen enthalten, sonst wird eine java.lang.IllegalArgumentException von java.net.URI.create geworfen.

wenn jemand eine idee hat, nur zu... mir läuft die zeit davon
An sich sollte eine URL sowieso keine Leerzeichen enthalten. So genannte Leerzeichen in einer URL werden mit "%20" dargestellt. Vielleicht kommst du ja damit weiter.
Code:
str.replace(' ', '%20');
(nicht getestet)
 
An sich sollte eine URL sowieso keine Leerzeichen enthalten. So genannte Leerzeichen in einer URL werden mit "%20" dargestellt. Vielleicht kommst du ja damit weiter.
Code:
str.replace(' ', '%20');
(nicht getestet)

danke, das war das erste woran ich gedacht und auch umgesetzt habe. Was ich wissen möchte ist, warum die URI klasse mit toASCIIString() des nicht automatisch macht.
 

Neue Beiträge

Zurück