我最近在 SO 上问了这个问题:Grabbing JSON works from one link, not from another
我得到的答案基本上是说getContentLength
服务器是可选的,所以我必须自己手动计算长度。好吧,我花了一些时间,但我想出了一些似乎得到正确计数的代码,但我不确定这是否是“正确”的方法。主要是因为我的while(0==0)
陈述。
我得到的确切答案是:
content-length 是响应服务器设置的标头。它是可选的,谷歌选择不为动态生成的内容发送它(大多数服务器不发送)。因此,您必须读取流直到用完字节,而不是一口气完成。
所以这是我想出的代码:
Reader reader = new InputStreamReader(inputStream);
int contentLength=0;
int cur;
while (0==0){
cur = reader.read();
if (cur == -1) {
break;
} else {
contentLength++;
}
}
当服务器没有为您提供内容长度时,这似乎是一种可行的解决方案吗?