Httpconnection Kürzen Nachrichten in Sony Ericsson W580
Frage
Ich habe ein Problem, während HttpConnection
mit einem Sony Ericsson W580 verwendet wird.
Die Antwort auf meine http-Anfragen ist application/octet-stream
, und ich bin eine ziemlich große Array von Bytes zu senden.
In diesem Mobiltelefon ist es jedoch konsequent auf 210 Bytes abgeholzt wird ...
Ich habe die MIDP-Anwendung in einer großen Anzahl von verschiedenen Mobiltelefonen getestet, verschiedene Mobilfunkanbieter und Wi-Fi verwenden, und keine andere mobilen hat dieses Verhalten gezeigt.
Lösung
Ok, ich fand das Problem. Völlig meine Schuld ...
Wie ich lese den Strom:
while(true){
int bytesRead = stream.read(tmpBuffer);
// if -1, EOF
if(bytesRead < 0)
break;
(...)
// WRONG LOGIC !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// if we read the last chunk of data, and found EOF
if(bytesRead < tmpBufferArrayLength)
break;
// WRONG LOGIC !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
Sehen Sie den Teil zwischen der „falschen Logik !!!“ Bemerkungen? Ich war die Annahme, dass, wenn lesen (tmpBuffer) könnte den tmp-Puffer nicht vollständig füllen, es war, weil EOF erreicht wurde. Die API dies ist keine Garantie überhaupt. es heißt nur, dass EOF durch einen Lese signalisiert wird (tmpBuffer) liefert -1
Ich habe das nicht vor, weil alle Handys (und emulatores) ich getestet hatte wurden jeden Aufruf zu füllen in der Lage, vollständig die Puffer bei.