2009-08-11 7 views
0

Ich habe ein Problem bei der Verwendung HttpConnection mit einem Sony Ericsson W580.HttpConnection abgeschnitten Nachrichten in Sony Ericsson W580

Die Antwort auf meine HTTP-Anfragen ist application/octet-stream, und ich sende eine ziemlich große Reihe von Bytes. jedoch

In diesem Handy wird konsequent auf 210 Bytes abgeholzt werden ...

ich die MIDP-Anwendung in einer großen Anzahl von verschiedenen Mobiltelefonen getestet haben, mit verschiedenen Mobilfunkanbietern und Wi-Fi und kein anderes Handy hat dieses Verhalten gezeigt.

Antwort

0

Ok, ich habe das Problem gefunden. Völlig meine Schuld ...

Wie ich den Strom lese:

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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
} 

Siehe Teil zwischen der „falschen Logik !!!“ Bemerkungen? Ich nahm an, dass, wenn gelesen (tmpBuffer) den tmp Puffer nicht vollständig füllen konnte, es war, weil EOF erreicht wurde. Die API garantiert dies überhaupt nicht: es gibt nur an, dass EOF durch einen Lesevorgang (tmpBuffer) signalisiert wird, der -1 zurückgibt.

Ich habe das vorher nicht gesehen, weil alle Handys (und Emulatoren), die ich getestet hatte, in der Lage waren, den Puffer bei jedem Anruf vollständig zu füllen.

Verwandte Themen