HttpConnection обрезает сообщения в Sony Ericsson W580 - PullRequest
0 голосов
/ 11 августа 2009

У меня возникла проблема при использовании HttpConnection с Sony Ericsson W580.

Ответ на мои запросы http: application/octet-stream, и я отправляю довольно большой массив байтов.

Однако в этом мобильном телефоне он постоянно сокращается до 210 байт ...

Я тестировал приложение MIDP на большом количестве разных мобильных телефонов, используя разные операторы мобильной связи и Wi-Fi, и ни один другой мобильный телефон не показал такого поведения.

1 Ответ

0 голосов
/ 13 августа 2009

Хорошо, я нашел проблему. Я полностью виноват ...

Как я читал поток:

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

См. Часть между "неправильной логикой !!!" Комментарии? Я предполагал, что если read (tmpBuffer) не может полностью заполнить буфер tmp, то это потому, что достигается EOF. API вовсе не гарантирует этого: он просто заявляет, что EOF сигнализируется чтением (tmpBuffer), возвращающим -1.

Я не видел этого раньше, потому что все мобильные телефоны (и emulatores), которые я тестировал, могли полностью заполнять буфер при каждом вызове.

...