2009-08-11 4 views
0

J'ai rencontré un problème lors de l'utilisation de HttpConnection avec un Sony Ericsson W580.HttpConnection tronquer des messages dans Sony Ericsson W580

La réponse à mes requêtes http est application/octet-stream, et j'envoie un assez grand nombre d'octets.

Dans ce téléphone mobile cependant, il est toujours d'être réduit à 210 octets ...

Je l'ai testé l'application MIDP dans un grand nombre de téléphones mobiles différents, en utilisant différents opérateurs de téléphonie mobile et wi-fi , et aucun autre mobile n'a montré ce comportement.

Répondre

0

Ok, j'ai trouvé le problème. Entièrement de ma faute ...

Comment je lisais le flux:

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

Voir la partie entre la « mauvaise logique !!! » commentaires? Je supposais que si read (tmpBuffer) ne pouvait pas remplir complètement le tampon tmp, c'était parce qu'EOF était atteint. Le API ne le garantit pas du tout: il indique simplement que EOF est signalé par un read (tmpBuffer) retournant -1.

Je ne l'avais pas vu auparavant parce que tous les mobiles (et émulateurs) que j'avais testés étaient capables de remplir complètement le tampon à chaque appel.

Questions connexes