2009-08-11 61 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)都能够在每次通话时完全填充缓冲区。

相关问题