日期:2014-05-20  浏览次数:20827 次

[求助]http的is.read()最后读不到-1,是为什么?
is = httpConn.openInputStream();

ByteArrayOutputStream bos = new ByteArrayOutputStream();

while (flag && (ch = is.read()) != -1)

{
  bos.write(ch);
}

我限制模拟器的吞吐量为56000

然后在模拟器上读返回的时候

同一个请求

大概有10%的概率,在数据读完的时候最后读不到-1

导致程序堵死在is.read()

非常郁闷

哪位大牛知道怎么解决

谢谢


------解决方案--------------------
能catch住什么异常吗? 比如EOFException
------解决方案--------------------
帮顶
------解决方案--------------------
帮顶
------解决方案--------------------
把你确定他读完的情况后,ch里面的数据打印一下看看
------解决方案--------------------
关注 是否是链路堵塞
------解决方案--------------------
is = httpConn.openInputStream();

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] data=new byte[512];
int length=0;
do{
length=is.read(data);
 bos.write(data);

}while{length>=0};


------解决方案--------------------
呵呵是啊,没遇到过,你可以上真机试试,也许真机完全没事,就不用浪费时间研究这个了,呵呵。