0

HttpConnectionSonyEricssonW580で使用しているときに問題が発生しました。

httpリクエストへの応答はapplication/octet-streamです。非常に大きなバイト配列を送信しています。

しかし、この携帯電話では、一貫して210バイトに削減されています...

さまざまな携帯電話会社とWi-Fiを使用して、さまざまな携帯電話でMIDPアプリケーションをテストしましたが、他の携帯電話でこの動作を示したものはありません。

4

1 に答える 1

0

わかりました、問題が見つかりました。完全に私のせい...

ストリームをどのように読んでいたか:

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はこれをまったく保証しません: read(tmpBuffer) が -1 を返すことによって EOF が通知されることを示しているだけです。

私がテストしたすべてのモバイル (およびエミュレーター) は、すべての呼び出しでバッファーを完全に満たすことができたので、これまでは見たことがありませんでした。

于 2009-08-13T10:14:40.203 に答える