Android 4.4.4 (Nexus5) で確認した現象で、
HttpURLConnection::getInputStream()で取得したInputStreamから
データを読み込もうとしたが、何も取得できなかった。
そのInputStreamのavailable()は0となっていた。
また、HttpURLConnectionのgetContentLength()は-1となっていた。
通信を行っているサーバーのほうではちゃんとデータを返しており、
返却するデータサイズを小さくしてみると、それは受信できた。
また、2.3端末で同じアプリを実行し、同じサーバーに接続すると問題なくデータを受信した。
原因はアプリや端末側ではなくサーバー側にあり、
サーバーでContent-Lengthヘッダを明示的に出力するようにしたところ、
データを取得することができるようになった。
要因も対応も複数あるかもしれない現象だが、一例として自分が踏んだものを残しておく。
※2014/11/25 追記
Android 5.0では、getContentLength()が正しく取得できてもavailable()は0になるよう。
なので、InputStreamからデータを取得する際には、available()は期待しないようにする。