2009-08-11 54 views
0

我一直在使用HttpConnection與索尼愛立信W580有問題。HttpConnection截斷消息索尼愛立信W580

對我的http請求的響應是application/octet-stream,並且我發送了一個相當大的字節數組。

在這款手機但是,它始終被削減到210個字節......

我在大量不同的手機測試MIDP應用程序,使用不同的移動運營商和Wi-Fi ,並沒有其他手機顯示出這種行爲。

回答

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

見之間的部分「錯誤邏輯!」註釋?我假設如果讀取(tmpBuffer)不能完全填充tmp緩衝區,那是因爲EOF正在達到。 API並不能保證這一點:它只是聲明EOF是通過返回-1的讀取(tmpBuffer)來發信號。

我之前沒有看到這個,因爲我測試過的所有手機(和emulatores)都能夠在每次通話時完全填充緩衝區。

相關問題