0

我在使用HttpConnection索尼爱立信 W580 时遇到问题。

对我的 http 请求的响应是application/octet-stream,并且我正在发送一个相当大的字节数组。

然而,在这款手机中,它一直被削减到 210 字节......

我已经在大量不同的手机上测试了 MIDP 应用程序,使用不同的移动运营商和 wi-fi,并且没有其他手机表现出这种行为。

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根本不保证这一点:它只是声明 EOF 由返回 -1 的 read(tmpBuffer) 发出信号。

我以前没有看到这一点,因为我测试过的所有手机(和模拟器)都能够在每次通话时完全填满缓冲区。

于 2009-08-13T10:14:40.203 回答