Hallo,
ich schreibe gerade ein Programm welches Dateien aus dem Internet herunterlädt - nicht irgendwelche sondern ganz spezielle. Deshalb ändere ich auch den Browser-Agent. Folgendes funktioniert auch ganz wunderbar, allerdings würde ich gerne einen Fortschrittsbalken haben. Soweit auch keinb Problem, allerding weiß ich nicht wie ich die Größe des InputStream ermitteln kann. Mit available() erhalte ich einen Wert - dieser stimmt jedoch nachweißlich nicht.
Hier der Code:
URL link = new URL(str);
//HttpURLConnection verb = (HttpURLConnection)link.openConnection();
HttpURLConnection verb = (HttpURLConnection)link.openConnection();
verb.addRequestProperty(„User-Agent“, userAgent);
verb.setRequestMethod(„GET“);
verb.connect();
int responseCode = verb.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
byte tmp_buffer[] = new byte[4096];
InputStream iS = verb.getInputStream();
int n = 0;
double bisherAbgerufen = 0.0;
FileOutputStream oS = new FileOutputStream(datei);
//Anzeige öffnen
this.frame.setVisible(true);
this.frame.jLbl_gesamt.setText(Integer.toString(iS.available()));
while ((n = iS.read(tmp_buffer)) > 0) {
oS.write(tmp_buffer, 0, n);
oS.flush();
verb.
bisherAbgerufen = bisherAbgerufen + (double)n;
this.frame.jLbl_aktuell.setText(Double.toString(bisherAbgerufen));
}
oS.close();
Ich würde auch eine andere Variante als die über InputStream verwenden - die Änderung des User-Agents muss jedoch möglich sein!
Vielen Dank schonmal,
Florian L.