Download grosses File

  • Antworten:2
mcfly
  • Forum-Beiträge: 286

24.02.2012, 18:15:44 via Website

Hallo zusammen

Mit meiner App lade ich ein grosses File per Wifi von meinem Server. Jetzt habe ich das Problem, dass auf meinem Mobilphone regelmässig ein 'unexpected end of stream' oder 'timout error' -Fehler mitten im Download ( 20-80% downloadfortschritt ) kommt. Mit meinem Tablet gibt es keine Probleme.
Wenn ich das Mobile direkt an die Wifi-Antenne halte, dann klappts auch mit dem Mobile. Ich vermute also, dass das Problem an einer schwachen Wifiverbindung liegt. Soweit ich das beobachte, stellt aber das Wifi auf dem Mobile nie ab. D.h. die Verbindung ist da. ( 5 Meter vom Wifiantenne entfernt )
Ich vermute es gibt zwischendurch timeouts.

Wisst Ihr mir zu helfen wie ich das in den Griff kriege ?
Ich habe WIFI_LOCK und WAKE_LOCK aktiv. Aktuell Connection Timeout auf 150 Sek.

Grüsse
1URLConnection conn = url.openConnection();
2 conn.setConnectTimeout(150000);
3 conn.setReadTimeout(150000);
4 InputStream input = url.openStream();
5
6 OutputStream output = new FileOutputStream(stoPath);
7
8 byte[] buffer = new byte[1024];
9 int bytesRead = 0;
10
11 while ((bytesRead = input.read(buffer, 0, buffer.length)) > 0 ) {
12 Mache was .....
13
14 }
15 output.close();

— geändert am 24.02.2012, 18:33:39

Antworten
reiti.net
  • Forum-Beiträge: 339

25.02.2012, 12:13:11 via Website

wenn die verbindung abbricht, dann bricht sie ab .. da kannst du kaum was dagegen machen :-)

Es gäbe(!) zwar die Möglichkeit einen Download an einer bestimmten Stelle wieder aufzunehmen aber der java stream kann das mit sicherheit nicht.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

25.02.2012, 13:03:00 via Website

reiti.net
Es gäbe(!) zwar die Möglichkeit einen Download an einer bestimmten Stelle wieder aufzunehmen aber der java stream kann das mit sicherheit nicht.
Das hängt ja nicht am Java-Stream, sondern ist ein HTTP Header (Range), den man beim Request übergibt.
Siehe: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Das sollte auch mit Java gehen, wenn der Server das unterstützt.

Ansonsten wäre der StackTrace der Fehlermeldung interessant.
Da kann man sicher mehr draus ableiten.

Antworten