HttpConnection
SonyEricssonW580で使用しているときに問題が発生しました。
httpリクエストへの応答はapplication/octet-stream
です。非常に大きなバイト配列を送信しています。
しかし、この携帯電話では、一貫して210バイトに削減されています...
さまざまな携帯電話会社とWi-Fiを使用して、さまざまな携帯電話でMIDPアプリケーションをテストしましたが、他の携帯電話でこの動作を示したものはありません。
わかりました、問題が見つかりました。完全に私のせい...
ストリームをどのように読んでいたか:
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 が通知されることを示しているだけです。
私がテストしたすべてのモバイル (およびエミュレーター) は、すべての呼び出しでバッファーを完全に満たすことができたので、これまでは見たことがありませんでした。