>496
まず、urlでダウンロードするデータが何byteなのか見る。
次に、それが int length = (int)conn.getLength(); で取得した値と同じかどうか確かめる。
違うなら、サーバの設定なり元データなりに問題があるかもしれない。
同じなら、今度は受信したデータとサーバ上の元データとで内容を比較する。
一致すれば(データの中身が何で埋まっていようと関係なく)何も問題ない。

受信後のデータのサイズや内容が、元データと違ってしまうなら
とりあえずwhile()ループの方法を採用する。で、原因を調べる。
サーバの設定なり元データなりに問題があるかもしれない。
自分の勘違いかもしれない。