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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top