0
我一直在使用HttpConnection
与索尼爱立信W580有问题。HttpConnection截断消息索尼爱立信W580
对我的http请求的响应是application/octet-stream
,并且我发送了一个相当大的字节数组。
在这款手机但是,它始终被削减到210个字节......
我在大量不同的手机测试MIDP应用程序,使用不同的移动运营商和Wi-Fi ,并没有其他手机显示出这种行为。
我一直在使用HttpConnection
与索尼爱立信W580有问题。HttpConnection截断消息索尼爱立信W580
对我的http请求的响应是application/octet-stream
,并且我发送了一个相当大的字节数组。
在这款手机但是,它始终被削减到210个字节......
我在大量不同的手机测试MIDP应用程序,使用不同的移动运营商和Wi-Fi ,并没有其他手机显示出这种行为。
好的,我发现了这个问题。完全是我的错......
如何在读流:
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)都能够在每次通话时完全填充缓冲区。